# Java Code formatiert drucken



## flossy (4. Jan 2010)

Hallo Zusammen,
ich möchte gerne meinen Java-Code für eine Review in einer sauberen Form ausdrucken. Hierzu suche ich ein Tool/Editor, welches/welcher Folgendes für das Drucken unterstützt:

 Schriftgröße einstellbar
 Rand (für Kommentare), 
 Kopfzeile ( Dateiname, Version, Datum )
 Syntax-Highlighting in Farbe
 unter Linux ausführbar 
Oder habt ihr eine Idee, wie dies mit Eclipse geschehen kann?


----------



## flossy (4. Jan 2010)

dies wäre mal ein Anfang, aber nicht wirklich befriedigend:

```
enscript --color --style=a2ps -toc  -G -C -h --language=PostScript -Ejava -f Courier8 -F Verdana12 -j -p out.ps MyClass.java
```

*UPDATE:* So, habe noch nen kleines Script dazu erstellt:

```
#!/bin/sh
MIMETYPE="text/x-java"
SUBDIR=PS-Files/

mkdir $SUBDIR

ls | while read FILE
  do
    # check if it is a Java file
    if [ "`file -b --mime-type "$FILE"`" = $MIMETYPE ]; then
	`enscript --color --style=a2ps -toc  -G -C -h --language=PostScript -Ejava -f Courier8 -F Verdana12 -j -p $SUBDIR/$FILE.ps $FILE`
#    	`enscript -toc -G -C -h --language=PostScript -Ejava -f Courier8 -F Verdana12 -j -p $SUBDIR/$FILE.ps $FILE`
    fi    
  done
```


----------



## flossy (5. Jan 2010)

...so, nachdem ich so reichlich viele Vorschläge bekommen habe, möchte ich hier kurz meinen zweiten abgeben ;-)

Man nehme ein wenig LaTeX ...

```
\documentclass[a4paper,10pt,onepage]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage[utf8x]{inputenc}
\setcounter{secnumdepth}{0}

% ---------------------- COLOR -------------------- %
\usepackage{color}
\definecolor{darkgray}{rgb}{0.3,0.3,0.3}
\definecolor{middlegray}{rgb}{0.5,0.5,0.5}
\definecolor{lightgray}{rgb}{0.7,0.7,0.7}
\definecolor{green}{rgb}{0.1,0.6,0.2}

% ------------------- LISTINGS -------------------- %
\usepackage{listings}
% ---------------  BEGIN WORKAROUND --------------- %
% for lstlistoflistings 
% see: http://www.komascript.de/node/477
\makeatletter% --> De-TeX-FAQ
\renewcommand*{\lstlistoflistings}{%
  \begingroup
  \if@twocolumn
  \@restonecoltrue\onecolumn
  \else
  \@restonecolfalse
  \fi
  \lol@heading
  \setlength{\parskip}{\z@}%
  \setlength{\parindent}{\z@}%
  \setlength{\parfillskip}{\z@ \@plus 1fil}%
  \@starttoc{lol}%
  \if@restonecol\twocolumn\fi
  \endgroup
}
\makeatother% --> \makeatletter
% ----------------  END WORKAROUND ----------------- %
% ---------------  LISTINGS VALUES ----------------- %
\lstset{
  language=Java,
  numbers=left, 
  numberstyle=\tiny,
  breaklines=true,
  numberblanklines=true,		  
  frame=tlrb,
  showtabs=false,
  %showspace=false,
  showstringspaces=false,
  %backgroundcolor=\color{yellow},
  basicstyle=\sffamily\fontsize{6}{7}\selectfont,
  identifierstyle=\color{green}, 
  stringstyle=\color{blue},
  commentstyle=\color{middlegray},
  keywordstyle=\color{black}\bfseries,                  
  emphstyle=\color{green},
 % caption={BasicHeaderImpl.java},
  captionpos=t
}

% page margings etc.
\usepackage{geometry}
\geometry{verbose,textwidth=16cm, outer=3cm}

% opening
\title{Code-Review}
\author{flossy}

\begin{document}
  \maketitle
  \tableofcontents

  \chapter{my.java.package.*}
  \input{listings.tex}

  %\addcontentsline{toc}{chapter}{Listings}
  %\lstlistoflistings

\end{document}
```

..und generiere hierzu die Listings mit einem Script:

```
#!/bin/sh

MIMETYPE="text/x-java";
SUBDIR="TEX-Files";
POSTFIX="-listing.tex";
LISTING_FILENAME="listings.tex";

rm $LISTING_FILENAME;
mkdir $SUBDIR;

ls | while read FILE
  do
    # check if it is a Java file
    if [ "`file -b --mime-type "$FILE"`" = $MIMETYPE ]; then
	# create file
	echo '\\newpage \section{'$FILE"} \lstinputlisting{$FILE}" > $SUBDIR/$FILE$POSTFIX;
	# add as input
	echo "\input{$SUBDIR/$FILE$POSTFIX}" >> $LISTING_FILENAME;
    fi    
  done
```
...und schon bekommt man ein schönes Dokument 

Vielen Dank für's Zuhören. Weitere Alternativen sind jedoch weiterhin herzlich willkommen!


----------



## Antoras (6. Jan 2010)

In deinem zweiten Shellscript ist ein Fehler:


```
echo '\\newpage \section{'$FILE"} \lstinputlisting{$FILE}" > $SUBDIR/$FILE$POSTFIX;
```
Bei 
	
	
	
	





```
newpage
```
 kommt nur ein Slash hin...

Ansonsten kann ich dir 
	
	
	
	





```
gedit
```
 empfehlen. Der Editor besitzt viele Einstellmöglichkeiten zum Drucken und entspricht bis auf den Rand auch all deinen Anforderungen. Aber Kommentare kann man sowieso überall hinschreiben, vorzugsweise ja in den Quelltext.


----------



## flossy (6. Jan 2010)

Antoras hat gesagt.:


> In deinem zweiten Shellscript ist ein Fehler:
> 
> ```
> echo '\\newpage \section{'$FILE"} \lstinputlisting{$FILE}" > $SUBDIR/$FILE$POSTFIX;
> ...


Wenn ich das Script mit nur einem Slash ausführe, dann bekommen ich durch *\n* einen Zeilenumbruch anstatt ein Backslash. Durch ein vorangehendes Backslash wird das zweite als Zeichen interpretiert. Fall dies bei dir anders sein sollte, wäre es interessant 



Antoras hat gesagt.:


> Ansonsten kann ich dir
> 
> 
> 
> ...


Stimmt, das sieht nach einer relativ einfachen Lösung aus. Danke!



Antoras hat gesagt.:


> Aber Kommentare kann man sowieso überall hinschreiben, vorzugsweise ja in den Quelltext.


Hmm, naja, kurze Kommentare schon, doch etwas längere sollten am rechten Rand platziert werden.


----------



## Antoras (6. Jan 2010)

Meine Shell (zsh) sieht \n offenbar nicht als EOL-Zeichen. Keine Ahnung warum, hab das aber nie gebraucht, weshalb mir das nicht aufgefallen ist. Dann schau ich gleich mal ob man das ändern kann...


----------

