\let Wiki .:. goLaTeX - Mein LaTeX-Forum


goLaTeX - Mein LaTeX-Forum

Mein LaTeX-Forum

goLaTeX.de - Wiki
 


\let

Low-Level-TeX-Anweisung um einem Makro die Definition eines anderen Makros zuzuweisen.

Inhaltsverzeichnis

[bearbeiten] Verwendung

Syntax:

\let\NEUESMAKRO=\ALTESMAKRO
\let\NEUESMAKRO\ALTESMAKRO

In beiden Fällen erhält das Makro \NEUESMAKRO die Definition, die \ALTEXMAKRO zum Zeitpunkt der Ausführung der Anweisung hat. Im Gegensatz zur Verwendung von \def wird dabei \NEUESMAKRO nicht zu einem Aufruf von \ALTESMAKRO. Im Gegensatz zur Verwendung von \edef wird dabei die Definition von \ALTESMAKRO auch nicht expandiert. Ist \ALTESMAKRO nicht definiert, so ist anschließend auch \NEUESMAKRO nicht definiert. Wird \ALTESMAKRO anschließend umdefiniert, so bekommt \NEUESMAKRO nicht die geänderte Definition von \ALTESMAKRO, sondern behält die alte Definition. Hatte \ALTESMAKRO Argumente, so hat \NEUESMAKRO ebenfalls Argumente.

Häufig wird \let verwendet, wenn eine Anweisung umdefiniert werden soll, wobei ihre alte Bedeutung in der neuen Definition mit verwendet werden soll. Siehe dazu das Beispiel unten. Dabei ist zu beachten, dass die Anweisung keine optionalen Parameter hat. In einem solchen Fall stellt das Paket letltxmacro einen erweiterten \let Befehl names \LetLtxMacro zur Verfügung.

[bearbeiten] Optionen

Die Anweisung \let kennt keine Optionen.

[bearbeiten] Beispiele

\newcommand*{\thesectionwas}{}% sicherstellen, dass \thesectionwas bisher nicht definiert war
\let\thesectionwas\thesection% \thesectionwas wird genau wie aktuelle \thesection definiert
\renewcommand*{\thesection}{Abschnitt~\thesectionwas}

In diesem Beispiel wird der aktuellen Definition von \thesection das Wort »Abschnitt« gefolgt von einem nicht trennbaren Leerzeichen angehängt.

\newcommand*{\itemwas}{}% sicherstellen, dass \itemwas bisher nicht definiert ist
\newenvironment{descplus}[1]{% neue Umgebung descplus mit einem Argument
  \description% description beginnen (entspricht im Wesentlichen \begin{description})
  \let\itemwas\item% \itemwas wird genau wie aktuell \item definiert
  \renewcommand*{\item}[1][]{% \item wird neu mit einem optionalen Argument definiert
    \itemwas[{##1#1}]% Aufruf der alten Definition von \item
  }%
}{%
  \enddescription% description beenden
}

Hier wird eine neue Umgebung descplus definiert. Diese hat ein Argument. Dieses Argument, also #1, wird jedem Argument von \item , also ##1, angehängt.

Argumente der inneren Definition (\item) werden wie üblich mit zwei »#« referenziert, während Argumente der äußeren Definition (descplus) mit nur einem »#« referenziert werden.

\def\A{A}
\let\B\A
\def\C{\A}
\A\B\C
\def\A{a}
\A\B\C

Ergibt die Ausgabe »AAAaAa«.

\let\A\undefined% wir gehen davon aus, dass \undefined nicht definiert ist!
\let\B\A
\def\C{\A}
\A\B\C

Ergibt in der letzten Zeile eine Fehlermeldung wegen undefiniertem \A, eine Fehlermeldung wegen undefiniertem \B und erneut eine Fehlermeldung wegen undefiniertem \A.

\let\A\undefined% wir gehen davon aus, dass \undefined nicht definiert ist!
\edef\B{\A}
\A\B

Ergibt bereits in der zweiten Zeile eine Fehlermeldung wegen undefiniertem \A.

[bearbeiten] Verwandte Befehle

  • \def - nicht expandierende Definition eines Makros
  • \edef - expandierende Definition eines Makros

[bearbeiten] Links




Impressum | FAQ | goLaTeX RSS Button RSS-Feed

Copyright © 2008 - 2015 goLaTeX.de