Defina conteúdo reutilizável --- de preferência no corpo ou no cabeçalho

Defina conteúdo reutilizável --- de preferência no corpo ou no cabeçalho

Estou escrevendo um documento onde o nome de uma pessoa A aparecerá em vários lugares da seção A. Da mesma forma, o nome da pessoa B aparecerá em vários lugares da seção B, etc.

Existe alguma maneira pela qual, logo antes da seção A, eu possa definir uma variável, digamos, PersonName, atribuir a ela um valor relevante para a Pessoa A e usá-lo na seção A. Em seguida, redefina PersonName no início da seção B, use na seção B, etc.

Se PersonName não puder ser definido no corpo, posso declará-lo no preâmbulo e continuar atribuindo valores diferentes a ele no corpo?

Responder1

É exatamente para isso que servem as macros. Você pode definir suas próprias macros com \newcommand{\command}{<actions>}e redefini-las com \renewcommand. Ambos os comandos podem ser dados em qualquer lugar do documento, então você poderia fazer algo assim:

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

Responder2

Com oscontentspacote é fácil o suficiente para fazer o que você está procurando. Tudo armazenado na memória, claro, se você preferir arquivos externos, você pode usar a versão do ambiente e a chave write-env=file.texe além de armazená-los na memória, você pode ter o conteúdo em arquivos separados e depois usar o \input. Prefiro salvar na memória :)

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

informação relacionada