Danke schon mal im Voraus
Knigge
listings.sty
Damit kannst Du die Sourcen direkt einbinden und sie sehen ganz gut aus.
HTH
Martin
--
:wq
Christian Wiese wrote:
> ich glaube mal irgendwo gelsen zu haben, daß ich C Quelltxt durch ein
> Programm durchschieben kann und bekommen dann ein in LaTeX einbindbares
> .tex file.
bei der Classenbibliothek LEDA ist afaik solch ein Tool dabei.
Ich benutze aber lieber das Listings-Paket und binde die C++-Quellen mit
\lstinputlisting ein.
Da ich aber nicht immer eine ganze Quelldatei einbinden will, habe ich mir
ein kleines Perlscript geschrieben, das die Quelldatei zerhackt.
<--- schnipp --->
#!/usr/local/bin/perl -w
sub error {
print STDERR "error at line number ".$line_nr."\n";
exit();
}
$line_nr=0;
open(FILE, $ARGV[0]);
while (defined($line = <FILE>)) {
chomp($line);
$line_nr++;
if ($line =~ /\\S_DOC_FILE/) {
@words=split(/ /, $line);
$i=0;
while (!($words[$i] =~ /\\S_DOC_FILE/)) {
$i++;
}
if ($words[$i] eq "\\S_DOC_FILE") {
if ($i+1>=@words) {
error;
}
open(OUT, "> ".$words[$i+1]);
while ((defined($line_out = <FILE>)) &&
!($line_out =~ /\\S_DOC_FILE_END/)) {
chomp($line_out);
$line_nr++;
print OUT $line_out."\n";
}
close(OUT);
$line_nr++;
} else {
error;
}
}
}
close(FILE);
<--- schnapp --->
Das Perlprogramm erwartet den Namen einer C++-Quelltextdatei als Argument.
Im C++-Quelltext müsste dann sowas wie
<--- schnipp --->
// \S_DOC_FILE foo.cc
const char * foo(void) {
return("foo");
}
// \S_DOC_FILE_END
<--- schnapp --->
stehen. Die Zeilen zwischen
// \S_DOC_FILE foo.cc
und
// \S_DOC_FILE_END
werden in die Datei foo.cc geschrieben. Trennzeichen in den beiden
Kommentarzeilen sind je genau ein Space.
Man kann bei \lstinputlisting zwar ein Zeilennummernbereich an geben,
der eingebunden werden soll, aber dieser ändert sich praktisch ständig.
Heiko
--
-- Hoffnung ist der krankhafte Glaube an den Eintritt des Unmöglichen.
-- (Henry Louis Mencken)
-- Heiko Bauke @ http://www.uni-magdeburg.de/bauke
Das sollte lgrind sein:
ftp://ftp.dante.de/tex-archive/nonfree/support/lgrind/
Kennt verschiedene Programmiersprachen, macht Zeilennummern und
Schlüsselworterkennung mit Fettdruck.
Enthält aber nicht-freien Code. Keine Ahnung, was das für die
Nutzung bedeutet. Aus dem README:
"LGrind contains non-free code written by Van Jacobson, [...]"
Gruß,
Matthias.
>listings.sty
>
>Damit kannst Du die Sourcen direkt einbinden und sie sehen ganz gut aus.
Also ich habe keine guten Erfahrungen mit listings.sty (obwohl das
hier schon oefters empfohlen wurde). Reden wir vom gleichen Paket?
Package: listings 2000/08/23 v0.21 (Carsten Heinz)
Ich habe zum Beispiel eine Codezeile aus einem Perl-Script...
print "\nList of tables for \"$DSN\"\n\n";
...die ungefaehr so formatiert wird:
print "\ n List of tables for \" $DSN\"\n\n";
Das schaut nicht nur bescheiden aus, sondern ist auch sinnentstellend
(Leerraum zwischen "\" und "n").
Roland Smiderkal
Hi!
Christian Wiese <kni...@kayak.cri-uni-hannover.de> wrote:
> ich glaube mal irgendwo gelsen zu haben, daß ich C Quelltxt durch ein
> Programm durchschieben kann und bekommen dann ein in LaTeX einbindbares
> .tex file.
> Kennt jemand so etwas oder ein Tool welches mir die Arbeit zur
> Erstellung von
> Struktugrammen (und Programmablaufplänen) erleichtert?
Zur Erstellung von Struktogrammen habe ich noch nichts brauchbares
gefunden; aber ich arbeite - wenn ich mal Zeit und Mu?e habe - an
einem Script, das C-Code optisch so aufbereitet, daß es für
jede Funktion eine Box kreiert, den namen der Funktion dort
hinein schreibt und die Boxes entsprechend ihrer Aufrufe mit
Pfeilen verbindet; aleo wenn Funktion x die Funktion y aufruft,
wird von Funktion x ein Pfeil nach Funktion y erzeugt.
Das Teil soll mir helfen, die Struktur bereits vorhandener
C-Sourcen zu analysieren und dies dann als feine
Programmdokumentation dem armen programmierer zur Verfügung stellen.
Wenn Du ein Programm hast und es zwecks Dokumentation durch
ein Programm schicken willst, das Dir TeX-/LaTeX-Code erzeugt,
um damit dann eine vernünftige Dokumentation zu erstellen,
dann ist das Programm, dwas Du suchst (wenn Du nicht gleich
"echte" Literate programming tools nutzen willst), src2tex
bzw. src2latex.
Es bietet nicht so elegante Möglichkeiten, wie die anderen
Literate programming Tools. Dafür muß man aber auch fast nichts
dazu lernen, wenn man bereits seine programmiersprache
und auch TeX/LaTeX beherrscht.
Der Code, den src2latex auswirft ist zwar reichlich krude und
oversized 8schlecht optimiertes Programm), aber ich habe es
durchaus schon in der Praxis angewendet.
src2latex steht unter der GPl und ich habe schon ein
paar Änderungen für den Eigenbedarf vorgenommen.
Die Idee des Programms gefällt mir; aber ich habe schon
ernsthaft überlegt, das Teil mal komplett umzuschreiben, oder
mal den Ansatz (die Syntax) des programms zu übernehmen und
eine redo-from-scratch Implementation vorzunehmen.
Ind er TEX-DL-Mailinhlöiszte haben sich jedenfalls die
TeX-Gurus (zurecht) über den Kruden Ausgabecode
aufgeregt.
Aber wenn man das Teil umschreibt, ist es sicherlich prima.
Wie gesagt, ist es trotz kruden TeX-Codes aber praxistauglich
und wurde von mir auch auf arbeit schon angewendet.
Das prinzip ist simpel: Die Dokumentation wird einfach in
die Kommentarzeilen des Programms eingegeben.
Man hat dann verschiedene Modi: Den eigentlichen Quelltext,
also den programm-Code-Modus (verbatim), einen minimalen
TeX-Modus (Quasi-TeX-Mode) und einen eigentlichen TeX-Modus.
Man schreibt im Quasi-Tex bzw. TeX-Modus seine Texte und
Dokumentation, so, als wenn man eben (La)TeX-texte editiert.
und ausserhalb der Kommentarzeilen schreibt man halt seinen
Programmcode, wie man es gewohnt ist.
Für's schnelle mal eben gut dokumentierten Code schreiben
ist das Teil absolut gut geeignet. nennen wir es mal ein
Geradeaus-Literate-programming-Tool.
Es kann auch mit diversen anderen Sprachen benutzt werden,
also z.B. auch Perl oder so.
Die Sprachvielfalt ist einer der Bonuspunkte dieses Tools.
Und man kann auch mit \includegraphics seine Bilder in die
programmdoku einbinden.
Ist ganz schnuckelig.
Aber für Sourcen, die auf mehrere Dateien verteilt sind,
muß man sich das Teil zurecht patchen, damit man nicht
in jedem Doku-File ein \documentclass drin stehen hat.
Tschüß,
Oliver
--
Remember, Information is not knowledge; Knowledge is not Wisdom;
Wisdom is not truth; Truth is not beauty; Beauty is not love;
Love is not music; Music is the best.
(Frank Zappa)
Bitte, bitte, bitte: In einer kurzen Mail den Autor in Kenntnis
setzen (also mich). Es ist sonst unmoeglich so etwas zu beheben,
da ich (a) bei weitem nicht alle unterstuetzten Programmiersprachen
selbst verwende und (b), wenn ich von der Dokumentation absehe,
das Paket erst _einmal_ benutzt habe. Das wollte ich eigentlich
nie verraten, aber nun ist es passiert ...
> Eingentlich ist listings schon ganz brauchbar; man muss nur die
> absurden Default-Settings (CMR auf `fixed width' zerdehnt) durch
>
> \lstset{basicstyle=\ttfamily,flexiblecolumns=true}
>
> ändern.
Die naechste Version wird andere Default-Settings haben, ich weiss
nur noch nicht welche der beiden dann unterstuetzen `flexiblecolumns'
voreingestellt sein wird. Es wird auch wieder `commentstyle=\itshape'
default sein, was vor geraumer Zeit verloren ging.
Carsten