Kann ich eine Variable in LaTeX definieren?


349

Wie kann ich in LaTeX eine Zeichenfolgenvariable definieren, deren Inhalt anstelle der Variablen in der kompilierten PDF-Datei verwendet wird?

Angenommen, ich schreibe ein technisches Dokument über eine Software und möchte den Paketnamen in der Präambel oder irgendwo anders definieren, damit ich ihn nicht ändern muss, wenn sich sein Name ändert, sondern nur an einer Stelle .


2
Für große Inhalte ist \ savebox ( en.wikibooks.org/wiki/LaTeX/Boxes#savebox ) zu erwähnen .
Immanuel Weihnachten

Antworten:


370

Fügen Sie Ihrer Präambel Folgendes hinzu:

\newcommand{\newCommandName}{text to insert}

Dann können Sie einfach \newCommandName{}im Text verwenden

Weitere Informationen \newcommandfinden Sie beispielsweise unter Wikibooks

Beispiel:

\documentclass{article}
\newcommand\x{30}
\begin{document}
\x
\end{document}

Ausgabe:

30

31
@DiAlex Seien Sie vorsichtig, wenn Sie die geschweiften Klammern weglassen, da dies den Leerraum nach dem eingefügten Text beeinträchtigt. Siehe diese Frage .
jtpereyda

Ich kann nicht erreichen, dass dies mit Nicht-ASCII-Zeichen richtig funktioniert. Irgendwelche Ideen?
Lindhe

164

Verwenden \defBefehl ein :

\def \variable {Something that's better to use as a variable}

Beachten Sie, dass \defbereits vorhandene Makros ohne Warnungen überschrieben werden und daher verschiedene subtile Fehler verursachen können. Um dies zu überwinden , verwenden Sie stattdessen namenbezogene Variablen wie my_varoder greifen Sie auf Befehle zurück.\newcommand\renewcommand


10
Die Verwendung \defkann problematisch sein, da nicht nach bereits vorhandenen Makros gesucht wird. Sehen Sie den zweiten Kreis der LaTeX-Hölle - als solcher ist es vorzuziehen, ihn zu verwenden\newcommand
Ryan Atallah

2
Danke @RyanAtallah hat einen Hinweis dazu hinzugefügt. Bedeutet die Bedeutung von nicht variable, dass es sich ändern kann? :)
Plaes

4
@plaes Du hast Recht, aber das bedeutet immer noch nicht, dass du es verwenden willst \def. Stattdessen ist es meiner Meinung nach empfehlenswert, zuerst alle Variablen zu "initialisieren", mit denen Sie arbeiten möchten \newcommand(auch wenn es nur mit ist \@empty), und dann Ihren Befehl zum Ändern der Variablen mit zu erstellen \renewcommand. Dadurch erfahren Sie, ob Ihre Variable bereits beendet ist, da \newcommandein Fehler (oder zumindest eine Warnung) ausgegeben wird.
Nick2253

4
Beachten Sie, dass dies \deffür Dinge im Mathematikmodus \newCommandNamefunktioniert , während dies nicht der Fall ist. (ZB \def\mathExpression{\pi^2 + \sin x})
Jollywatt

35

Für Variablen Abstände beschreiben, würden Sie verwenden \newlength(und die Werte manipulieren mit \setlength, \addlength, \settoheight, \settolengthund \settodepth).

Ebenso haben Sie Zugriff auf \newcounterDinge wie Abschnitts- und Abbildungsnummern, die im gesamten Dokument erhöht werden sollten. Ich habe dieses in der Vergangenheit verwendet, um Codebeispiele bereitzustellen, die getrennt von anderen Zahlen nummeriert wurden ...

Bemerkenswert ist auch \makebox, dass Sie ein wenig angelegtes Dokument zur späteren Wiederverwendung (und zur Verwendung mit \settolength...) speichern können .


25
Einfaches Verwendungsbeispiel wie \newlength{\hcolw}und \setlength{\hcolw}{0.47\textwidth}wäre nützlich.
Trybik


1

Ich denke, Sie möchten wahrscheinlich eine Token-Liste für diesen Zweck verwenden: um die Token-Liste einzurichten \newtoks\packagename , um den Namen zuzuweisen: \packagename={New Name for the package} um den Namen in Ihre Ausgabe einzufügen : \the\packagename.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.