Определите повторно используемый контент — желательно в теле или в заголовке.

Определите повторно используемый контент — желательно в теле или в заголовке.

Я пишу документ, в котором имя человека А будет встречаться в нескольких местах раздела А. Аналогично, имя человека Б будет встречаться в нескольких местах раздела В и т. д.

Есть ли способ, с помощью которого я могу определить переменную, скажем, PersonName, присвоить ей значение, относящееся к Person A, и использовать ее в разделе A. Затем переопределить PersonName в начале раздела B, использовать ее в разделе B и т. д.?

Если PersonName не может быть определен в теле, могу ли я объявить его в преамбуле и продолжать присваивать ему различные значения в теле?

решение1

Именно для этого и нужны макросы. Вы можете определить свои собственные макросы с помощью \newcommand{\command}{<actions>}и переопределить их с помощью \renewcommand. Обе команды можно задать в любом месте документа, поэтому вы можете сделать что-то вроде этого:

\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}

решение2

Сscontentspackage it достаточно легко сделать то, что вы ищете. Все хранится в памяти, конечно, если вы предпочитаете внешние файлы, вы можете использовать версию среды и ключ, write-env=file.texи помимо хранения их в памяти, вы можете иметь содержимое в отдельных файлах, а затем использовать \input. Я предпочитаю сохранять в памяти :)

\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}

Связанный контент