Ich schreibe ein Dokument, in dem der Name einer Person A an mehreren Stellen in Abschnitt A erscheint. Ebenso erscheint der Name einer Person B an mehreren Stellen in Abschnitt B usw.
Gibt es eine Möglichkeit, mit der ich direkt vor Abschnitt A eine Variable, beispielsweise „PersonName“, definieren, ihr einen für Person A relevanten Wert zuweisen und sie in Abschnitt A verwenden kann? Dann kann ich „PersonName“ am Anfang von Abschnitt B neu definieren, in Abschnitt B verwenden usw.
Wenn „PersonName“ nicht im Textkörper definiert werden kann, kann ich ihn dann in der Präambel deklarieren und ihm im Textkörper weiterhin verschiedene Werte zuweisen?
Antwort1
Genau dafür sind Makros da. Sie können Ihre eigenen Makros mit definieren \newcommand{\command}{<actions>}
und sie mit neu definieren \renewcommand
. Beide Befehle können überall im Dokument angegeben werden, Sie könnten also etwa Folgendes tun:
\documentclass{article}
\begin{document}
\section{Section A}
\newcommand{\PersonName}{Person A}
Some text written by \PersonName.
\section{Section B}
\renewcommand{\PersonName}{Person B}
Some text written by \PersonName.
\end{document}
Antwort2
Mit demscontents
Paket ist es einfach genug, das zu tun, was Sie suchen. Alles im Speicher gespeichert. Wenn Sie externe Dateien bevorzugen, können Sie natürlich die Umgebungsversion write-env=file.tex
und den Schlüssel verwenden. Neben der Speicherung im Speicher können Sie den Inhalt in separaten Dateien haben und dann verwenden \input
. Ich bevorzuge die Speicherung im Speicher :)
\documentclass{article}
\usepackage{scontents}
\setupsc{store-cmd=person}
\Scontents{Person A}
\Scontents{Person B}
\begin{document}
\section{Section A}
Some text written by \getstored[1]{person}
\section{Section B}
Some text written by \getstored[2]{person}
\end{document}