allanswers.org - TeX, LaTeX, DANTE e.V.: FAQ - Fragen und Antworten (Part 7 of 11)

 Home >  FAQ on different themesde-tex-faq >

TeX, LaTeX, DANTE e.V.: FAQ - Fragen und Antworten (Part 7 of 11)

Section 2 of 2 - Prev - Next


\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:  CTAN: macros/latex/contrib/fancyvrb
 


7.3.2 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, daß 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.

7.3.3 Wie kann ich eine eigene `verbatim'-Umgebung 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, so daß 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äßt die drei Zeichen \, { und } in ihrer besonderen
  Bedeutung, ist daher keine vollständige verbatim-Umgebung.
* `verbatim' (von Rainer Schöpf et al.) 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:     CTAN: macros/latex/base/
           CTAN: macros/latex/unpacked/
           CTAN: macros/latex209/contrib/misc/alltt.sty
verbatim:  CTAN: macros/latex/required/tools/
moreverb:  CTAN: macros/latex/contrib/moreverb
fancyvrb:  CTAN: macros/latex/contrib/fancyvrb
 


7.3.4 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.
* `lgrind'
  C-Programm und LaTeX-Style, für LaTeX2e; unterstützt sehr viele
  Programmiersprachen.
* `tiny_c2l'
  lex-Programm und LaTeX-Style; unterstützt neben C auch C++ und Java;
  kann überlange Zeilen umbrechen.


listings:  CTAN: macros/latex/contrib/listings/
lgrind:    CTAN: nonfree/support/lgrind/
tiny_C2l:  CTAN: support/tiny_c2l/
 


7.3.5 Wie kann ich den Inhalt einer Datei innerhalb einer
`verbatim'-Umgebung darstellen?

`verbatim' (von Rainer Schöpf et al.) 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:  CTAN: macros/latex/required/tools/
moreverb:  CTAN: macros/latex/contrib/moreverb
fancyvrb:  CTAN: macros/latex/contrib/fancyvrb
 


7.3.6 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. Siehe dazu Frage 8.5.3.

7.3.7 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 Frage 7.3.4 genannten Lösungen zu bevorzugen.

lineno:   CTAN: macros/latex/contrib/lineno
numline:  CTAN: macros/latex/contrib/numline
 


7.3.8 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'
(von Timothy van Zandt), eine speziell an die Erfordernisse des Paketes
`seminar' angepaßte und abgespeckte Version des `verbatim'. Mit
`comment' (von Victor Eijkhout) kann man neue Kommentarumgebungen
definieren, die mit \includecomment- und \excludecomment-Deklarationen
aus- und eingeblendet werden können.

verbatim:  CTAN: macros/latex/required/tools/
xcomment:  CTAN: macros/latex/contrib/seminar/inputs/xcomment.sty
comment:   CTAN: macros/latex/contrib/comment/
 


7.3.9 Wie kann ich mehrere Versionen eines Textes erstellen oder
bedingte Textteile verwenden?

Auf der einen Seite kann man die in 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:   CTAN: macros/latex/contrib/misc/version.sty
optional:  CTAN: macros/latex/contrib/misc/optional.sty
comment:   CTAN: macros/latex/contrib/comment/
 


7.3.10 Ich will \verb z.B. für Dateinamen, E-Mail-Adressen und URL
verwenden. Wie schaffe ich es, daß 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:   CTAN: macros/latex/contrib/misc/url.sty
path:  CTAN: macros/latex/contrib/misc/path.sty
 


7.4 Zerbrechliche Anweisungen in `moving arguments'


7.4.1 Was sind `fragile commands'/zerbrechliche Anweisungen, was sind
`moving arguments'?

Der Text, den ein Autor im Argument von Anweisungen wie \caption,
\section etc. angibt, kann an mehreren Stellen in einem Dokument gesetzt
werden. Der Argumenttext von \section wird z.B. als Kapitelüberschrift
gesetzt und taucht evtl. nochmals im Inhaltsverzeichnis oder im
Seitenkopf bzw. -fuß auf. Diese Argumente nennt man `moving arguments',
da sie vom Platz, wo ein Autor sie angibt, auch zu anderen Stellen
verschoben werden.
Die korrekte Ausführung von `zerbrechlichen Anweisungen' hängt intern
von Zuweisungen ab. Innerhalb eines `moving argument' werden diese
Zuweisungen jedoch nicht durchgeführt, so daß solche Anweisungen
`zerbrechen'. Zu den zerbrechlichen Anweisungen zählen unter anderem
\cite, \ref, \pageref für Literatur- und Querverweise, \footnote,
\footnotemark, die Anweisungen \small, \large etc. zur Wahl der
Schriftgröße, mathematische Formelzeichen wie \sqrt, \notin, \overbrace
und viele mehr (siehe Frage 7.4.2, Bemerkung am Ende).

7.4.2 Wie kann ich innerhalb des Arguments von \caption, \section etc.
Anweisungen wie \cite, \ref, \pageref oder \footnote verwenden, ohne
Fehler wie `! Argument of \@sect has an extra }.' oder `! Use of
\@chapter doesn't match its definition.' zu erhalten?

Zerbrechliche Befehle wie \cite müssen im `moving argument' der
Anweisung \caption mit \protect geschützt werden, d.h. statt

  \caption{Bildunterschrift~\cite{PartlKnappen95}}

ist ein \protect direkt und _ohne_ geschweifte Klammern vor die zu
schützende Anweisung zu setzen:

  \caption{Bildunterschrift~\protect\cite{PartlKnappen95}}

Anweisungen wie \caption, \section etc. haben außerdem noch die
Möglichkeit, in einem optionalen Argument den zu `verschiebenden
Argumenttext' anzugeben. Das heißt, obiges könnte auch in

  \caption[Bildunterschrift]%
          {Bildunterschrift~\cite{PartlKnappen95}}

umformuliert werden. Jetzt ist das optionale Argument in []-Klammern das
`moving argument', in dem Sie zerbrechliche Anweisungen mit \protect
schützen müssen!
Beginnend mit LaTeX von Dezember 1995 sind Anweisungen wie \cite und
Anweisungen mit optionalem Argument, wie \sqrt, nicht mehr zerbrechlich
und benötigen damit kein \protect mehr. Dennoch sollten Sie diese
Anweisungen weiterhin mit \protect schützen, wenn Sie Ihre Dokumente
anderen zukommen lassen wollen.

--- DE-TeX-FAQ Ende Teil 7 ---

Section 2 of 2 - Prev - Next

Back to category de-tex-faq - Use Smart Search
Home - Smart Search - About the project - Feedback

© allanswers.org | Terms of use

LiveInternet