Gelegentlich habe ich hier Code gesehen, in dem Befehle mit leerem optionalen Argument vorkommen, wie z.B.

Open in writeLaTeX
\draw[] (\x,0pt) node[left]{$\x$};

In dem Beispiel scheint es keinen Unterschied zu machen, ob ich das optionale Argument leer übergebe oder ganz weglasse.

Ist das immer so? Oder gibt es da doch Unterschiede? Und wie verhält sich das mit dem optionalen Argument beim Laden von Dokumentenklasse oder Paketen?

gefragt 22 Mai '14, 10:17

welle's gravatar image

welle
10642431
Akzeptiert: 100%

bearbeitet 22 Mai '14, 10:35


Bei einen leeren optionalen Argument ist das optionale Argument eben genau das: leer. Bei einem nicht gesetzten optionalen Argument wird hingegen die Voreinstellung für dieses Argument verwendet, die auch nicht leer sein kann. Dazu ein Beispiel:

Open in writeLaTeX
\documentclass{article}
\newcounter{test}
\newcommand*{\nexttest}[1][gute Idee]{% neuer Befehl mit einem optionalen Argument,
                                      % dessen Voreinstellung "gute Idee" ist
  \refstepcounter{test}#1~\thetest
}
\begin{document}
Dies ist der \nexttest. \nexttest[Gute Idee] im Vergleich dazu. Und dann noch \nexttest[].
\end{document}

ergibt:

Unterschied zwischen leerem und nicht vorhandenem optionalen Argument

Man sieht hier deutlich, dass ein leeres optionales Argument nicht dasselbe ist, wie ein nicht angegebenes optionales Argument. Ein ähnliches Ergebnis bekommt man übrigens auch bei den Gliederungsbefehlen:

Open in writeLaTeX
\documentclass{article}
\begin{document}
\tableofcontents
\section[]{Test}
\end{document}

Hier erzeugt das leere optionale Argument einen Eintrag ins Inhaltsverzeichnis mit leerem Text (die Nummer bleibt). Verwendet man in dem Beispiel eine KOMA-Script-Klasse, wird sogar der gesamte Verzeichniseintrag unterdrückt.

Was das Weglassen des optionalen Arguments bewirkt, wird übrigens in der Regel in der Anleitung zum jeweiligen Befehl angegeben. In einigen Fällen kann das Ergebnis natürlich auch identisch mit einem leeren optionalen Argument sein. Da \usepackage und \documentclass als Voreinstellung für das optionale Argument ein leeres Argument haben, ist das bei diesen beiden Befehlen der Fall.

Permanenter link

beantwortet 22 Mai '14, 10:51

Bes's gravatar image

Bes
1411516

bearbeitet 22 Mai '14, 10:58

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×45
×35

Frage gestellt: 22 Mai '14, 10:17

Frage wurde angeschaut: 1,794 Mal

Zuletzt aktualisiert: 22 Mai '14, 11:00