Definieren Sie wiederverwendbare Inhalte – vorzugsweise im Textkörper oder in der Kopfzeile

Definieren Sie wiederverwendbare Inhalte – vorzugsweise im Textkörper oder in der Kopfzeile

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 demscontentsPaket 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.texund 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}

verwandte Informationen