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? |
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: 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 |