%META:TOPICINFO{author="HerbertVoss" date="1381659743" format="1.1" reprev="1.5" version="1.5"}% %META:TOPICPARENT{name="WebHome"}%
====== \verb-Anweisung, verbatim- und Kommentar-Umgebungen ======
[[#61|Wieso kann ich ''%%\verb%%'' nicht im Argument einer anderen Anweisung wie ''%%\footnote%%'', ''%%\parbox%%'' u.ä. verwenden? Wieso geht dies mit LaTeX2e nicht mehr, obwohl es mit LaTeX 2.09 ging?]] [[#63|Wieso bekomme ich die Fehlermeldung ''%%! LaTeX Error: \verb ended by end of line.%%'', wenn ich im Argument von ''%%\verb%%'' in der Eingabe ein Zeilenende habe?]] [[#64|Wie kann ich eine eigene Umgebung ''%%verbatim%%'' definieren?]] [[#66|Wie kann ich Programm-Code in mein LaTeX-Dokument einbinden?]] [[#68|Wie kann ich den Inhalt einer Datei innerhalb einer Umgebung ''%%verbatim%%'' darstellen?]] [[#70|Wie erreiche ich, dass innerhalb einer Umgebung ''%%verbatim%%'' Umlaute und andere Sonderzeichen zu sehen sind?]] [[#71|Wie kann ich Zeilennummern zu meinem Text hinzufügen?]] [[#73|Gibt es eine Kommentarumgebung, mit der ich größere Textteile auskommentieren kann?]] [[#75|Wie kann ich mehrere Versionen eines Textes erstellen oder bedingte Textteile verwenden?]] [[#77|Ich will ''%%\verb%%'' z.B. für Dateinamen, E-Mail-Adressen und URL verwenden. Wie schaffe ich es, dass innerhalb von ''%%\verb%%'' an geeigneten Stellen getrennt wird?]]
==== Wieso kann ich =\verb nicht im Argument einer anderen Anweisung wie \footnote, \parbox u.ä. verwenden? Wieso geht dies mit LaTeX2e nicht mehr, obwohl es mit LaTeX 2.09 ging? ====
Dies ging in LaTeX 2.09 auch nur, solange innerhalb des Arguments von ''%%\verb%%'' keine Zeichen mit besonderer Bedeutung verwendet wurden. Für diese Fälle hätte ein einfaches ''%%{\tt ...}%%'' auch ausgereicht. Die Eingabe ''%%\footnote{\verb+\cite+}%%'' liefert auch mit LaTeX 2.09 Fehler mit einer sehr kryptischen Fehlermeldung, deshalb wird diese falsche Benutzung in LaTeX2e mit der aussagekräftigeren Fehlermeldung ''%%! LaTeX Error: \verb illegal in command argument.%%'' verhindert.
Benutzt man das Paket =fancyvrb= und verwendet man in der Präambel des Dokuments die von diesem Paket definierte Anweisung =\VerbatimFootnotes%%'', so können, anders als in Standard-LaTeX, innerhalb von Fußnoten \verb-Anweisungen verwendet werden.
|''%%fancyvrb%%''|[[http://ctan.org/pkg/fancyvrb|macros/latex/contrib/fancyvrb]]|
==== Wieso bekomme ich die Fehlermeldung ! LaTeX Error: \verb ended by end of line., wenn ich im Argument von \verb in der Eingabe ein Zeilenende habe? ====
LaTeX 2.09 war bei ''%%\verb%%'' sehr viel toleranter und hat den Zeilenwechsel innerhalb des Arguments von ''%%\verb%%'' erlaubt, obwohl dies keinen Sinn macht, da ''%%\verb%%'' nur für kurze Textstücke gedacht ist und im formatierten Ergebnis kein Zeilenumbruch sichtbar wurde.
Aus diesen Gründen wird nun in LaTeX2e ein eventuell vorhandenes Zeilenende im Argument von \verb als Fehler gemeldet. Dies hat den Vorteil, dass ein versehentlich vergessenes Argumentendezeichen sehr früh erkannt und mit einer sinnvoller Fehlermeldung angezeigt werden kann. Als Seiteneffekt kann hierdurch auch die Verwendung von \verb im Argument einer anderen Anweisung erkannt und angezeigt werden.
Eine Abhilfe ist sehr einfach möglich, indem man in der Eingabe einen Zeilenwechsel im Argument von ''%%\verb%%'' vermeidet.
==== Wie kann ich eine eigene Umgebung =verbatim definieren? ====
Die intuitive Definition
\newenvironment{myverbatim}{%
\begin{verbatim}%
}{%
\end{verbatim}%
}
einer solchen Umgebung ist nicht möglich, da =verbatim%%'' ,festverdrahtet` nach der Zeichenkette ''%%\end{verbatim}%%'' sucht, sodass die neue Umgebung das ''%%\end{myverbatim}%%'' nicht als Ende erkennen kann.
Um dennoch =verbatim=-ähnliche Umgebungen definieren zu können, gibt es mehrere Pakete: * ''%%alltt%%'' belässt die drei Zeichen \, { und } in ihrer besonderen Bedeutung, ist daher keine vollständige verbatim-Umgebung. * ''%%verbatim%%'' erlaubt die Definition eigener =verbatim=-Umgebungen, wie z.B. \newenvironment{myverbatim}{% \verbatim % <== nicht \begin{verbatim} ! }{% \endverbatim % <== nicht \end{verbatim} ! }
* ''%%moreverb%%'' und ''%%fancyvrb%%'' enthalten weitere Umgebungen, die unterschiedliche =verbatim=-ähnliche Umgebungen vordefiniert enthalten oder mit denen man solche definieren kann.
|''%%alltt%%'' |[[http://mirror.ctan.org/macros/latex/base/|macros/latex/base/]] |
| |[[http://mirror.ctan.org/macros/latex/unpacked/|macros/latex/unpacked/]] |
| |[[http://mirror.ctan.org/macros/latex209/contrib/misc/alltt.sty|macros/latex209/contrib/misc/alltt.sty]]|
|''%%verbatim%%''|[[http://mirror.ctan.org/macros/latex/required/tools/|macros/latex/required/tools/]] |
|''%%moreverb%%''|[[http://mirror.ctan.org/macros/latex/contrib/moreverb|macros/latex/contrib/moreverb]] |
|''%%fancyvrb%%''|[[http://mirror.ctan.org/macros/latex/contrib/fancyvrb|macros/latex/contrib/fancyvrb]] |
==== Wie kann ich Programm-Code in mein LaTeX-Dokument einbinden? ====
Neben der Möglichkeit, kurze Abschnitte ,verbatim` einzubinden, gibt es verschiedene Tools, die automatisch LaTeX-Code mit den entsprechenden Syntaxhervorhebungen erzeugen: * =listings%%'' Reine LaTeX-Lösung; unterstützt viele Programmiersprachen; in neueren Versionen kann ''%%listings%%'' zusätzlich einige der Möglichkeiten des Pakets ''%%fancyvrb%%'' nutzen. Möchte man allerdings Umlaute im Programm-Listing darstellen, so mussfolgendes definiert werden: \lstset{% literate={ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1 {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1 {ß}{\ss}1}
* ''%%lgrind%%'' C-Programm und LaTeX-Style, für LaTeX2e; unterstützt sehr viele Programmiersprachen.
* ''%%tiny_C2%%'' l ex-Programm und LaTeX-Style; unterstützt neben C auch C++ und Java; kann überlange Zeilen umbrechen.
|''%%listings%%''|[[http://mirror.ctan.org/macros/latex/contrib/listings/|macros/latex/contrib/listings/]]|
|''%%lgrind%%'' |[[http://mirror.ctan.org/nonfree/support/lgrind/|nonfree/support/lgrind/]] |
|''%%tiny_C2l%%''|[[http://mirror.ctan.org/support/tiny_c2l/|support/tiny_c2l/]] |
==== Wie kann ich den Inhalt einer Datei innerhalb einer =verbatim=-Umgebung darstellen? ====
''%%verbatim%%'' stellt für diese Zwecke die Anweisung =\verbatiminput{ _Dateiname_ }%%'' zur Verfügung. Die Pakete ''%%moreverb%%'' und ''%%fancyvrb%%'' stellen weitere Anweisungen und Umgebungen zur Verfügung.
|''%%verbatim%%''|[[http://mirror.ctan.org/macros/latex/required/tools/|macros/latex/required/tools/]] |
|''%%moreverb%%''|[[http://mirror.ctan.org/macros/latex/contrib/moreverb|macros/latex/contrib/moreverb]]|
|''%%fancyvrb%%''|[[http://mirror.ctan.org/macros/latex/contrib/fancyvrb|macros/latex/contrib/fancyvrb]]|
==== Wie erreiche ich, dass innerhalb einer ,verbatim`-Umgebung Umlaute und andere Sonderzeichen zu sehen sind? ====
Zu diesem Zweck ist es nötig, die Art der Kodierung dieser Zeichen anzugeben und für das Paket ''%%listings%%'' \lstset{% literate={ä}{{\"a}}1 {ö}{{\"o}}1 {ü}{{\"u}}1 {Ä}{{\"A}}1 {Ö}{{\"O}}1 {Ü}{{\"U}}1 {ß}{\ss}1}
==== Wie kann ich Zeilennummern zu meinem Text hinzufügen? ====
Zu diesem Zweck gibt es die beiden LaTeX-Pakete ,lineno` und ,numline`. Handelt es sich um Programmcode, der numeriert werden soll, sind jedoch die in [[http://www.dante.de/faq/de-tex-faq/html/makros3.html#66|Frage 7.3.4]] genannten Lösungen zu bevorzugen.
|''%%lineno%%'' |[[http://mirror.ctan.org/macros/latex/contrib/lineno|macros/latex/contrib/lineno]] |
|''%%numline%%''|[[http://mirror.ctan.org/macros/latex/contrib/numline|macros/latex/contrib/numline]]|
==== Gibt es eine Kommentarumgebung, mit der ich größere Textteile auskommentieren kann? ====
Um Teile eines Textes auszukommentieren, kann man entweder zwei sehr einfache TeX-Konstrukte verwenden, oder man bedient sich spezieller Pakete, die unterschiedlich mächtige Kommentar-Umgebungen anbieten.
Zu den einfachen Konstrukten, die TeX selbst anbietet, zählt zum einen die Einklammerung des zu ignorierenden Textes mit den TeX-Primitiven \iffalse ... \fi:
\iffalse
Kommentartext, wird sehr schnell ueberlesen
\fi
Hier sollten im Kommentartext keine \if...-, \else- und \fi-Tokens (bzw. diese müssen korrekt geschachtelt sein), keine ,outer`-Makros oder unerlaubte Zeichen auftauchen, da diese zu einem Fehler oder vielleicht zu doch nicht auskommentierten Textteilen führen können.
Ein anderes, einfaches Verfahren ist die Verwendung eines Makros, wobei der auszukommentierende Text in dessen Argument geschrieben wird:
\newcommand{\kommentar}[1]{}
% ...
\kommentar{%
Kommentartext, wird als Argument gelesen und ignoriert
}%
Auch hier sollten die oben genannten Tokens nicht im Kommentartext auftauchen, außerdem darf der Kommentartext nicht zu lang sein, da sonst TeXs ,main memory` überlaufen könnte.
Spezielle Kommentarumgebungen beseitigen diese Einschränkungen - und haben meist selbst eigene Einschränkungen. ,verbatim` aus dem ,tools`-Bündel definiert eine sehr einfache Umgebung namens ,comment`, die man jedoch nicht schachteln kann. Weiterhin gibt es noch =xcomment%%'', eine speziell an die Erfordernisse des Paketes ''%%seminar%%'' angepasste und abgespeckte Version des ''%%verbatim%%''. Mit ''%%comment%%'' kann man neue Kommentarumgebungen definieren, die mit ''%%\includecomment%%'' und ''%%\excludecomment%%'' Deklarationen aus- und eingeblendet werden können.
|''%%verbatim%%''|[[http://mirror.ctan.org/macros/latex/required/tools/|macros/latex/required/tools/]] |
|''%%xcomment%%''|[[http://mirror.ctan.org/macros/latex/contrib/seminar/inputs/xcomment.sty|macros/latex/contrib/seminar/inputs/xcomment.sty]]|
|''%%comment%%'' |[[http://mirror.ctan.org/macros/latex/contrib/comment/|macros/latex/contrib/comment/]] |
==== Wie kann ich mehrere Versionen eines Textes erstellen oder bedingte Textteile verwenden? ====
Auf der einen Seite kann man die in [[http://www.dante.de/faq/de-tex-faq/html/makros3.html#73|Frage 7.3.8]] beschriebenen Kommentarumgebungen entsprechend verwenden. Daneben gibt es mit den Paketen ,version`, ,optional` und dem bereits erwähnten ,comment` Erweiterungen, mit denen man über Flags im Dokumentkopf Textteile bedingt ein- oder ausblenden kann.
|''%%version%%'' |[[http://ctan.org/pkg/version|macros/latex/contrib/misc/version.sty]] |
|''%%optional%%''|[[http://ctan.org/pkg/optional|macros/latex/contrib/misc/optional.sty]]|
|''%%comment%%'' |[[http://ctan.org/pkg/comment|macros/latex/contrib/comment/]] |
==== Ich will =\verb z.B. für Dateinamen, E-Mail-Adressen und URL verwenden. Wie schaffe ich es, dass innerhalb von \verb an geeigneten Stellen getrennt wird? ====
Für einige Anwendungen, wo man evtl. ''%%\verb%%'' benutzen könnte, gibt es auch spezielle Lösungen, die für den Anwendungszweck besser geeignet sind. So gibt es beispielsweise die Pakete ''%%url= und =path%%'' für Dateinamen, E-Mail- und WWW-Adressen, bei denen nur an bestimmten Stellen umbrochen werden darf, dies aber bereits automatisch geschieht.
|''%%url%%'' |[[http://ctan.org/pkg/url|macros/latex/contrib/misc/url.sty]] |
|''%%path%%''|[[http://ctan.org/pkg/path|macros/latex/contrib/misc/path.sty]]|
Verwendet man das Paket ''%%hyperref%%'', so wird automatisch das Paket ''%%url%%'' geladen. Für den Fall., dass man zum Übersetzen des Dokuments die Sequenz ''%%latex%%'' -> ''%%dvips%%'' -> ''%%ps2pdf%%'' benutzt, ist statt ''%%url%%'' das Paket ''%%breakurl%%'' zu laden und zwar //nach// ''%%hyperref%%''!
-- Main.HerbertVoss - 17 Mar 2009