Definir contenido reutilizable --- preferiblemente en el cuerpo o en el encabezado

Definir contenido reutilizable --- preferiblemente en el cuerpo o en el encabezado

Estoy escribiendo un documento donde el nombre de una persona A aparecerá en varios lugares de la sección A. De manera similar, el nombre de la persona B aparecerá en varios lugares de la sección B, etc.

¿Hay alguna manera de que justo antes de la sección A pueda definir una variable, digamos, PersonName, asignarle un valor relevante para la Persona A y usarla en la sección A? Luego, redefinir PersonName al comienzo de la sección B, usar en la sección B, etc.

Si PersonName no se puede definir en el cuerpo, ¿puedo declararlo en el preámbulo y seguir asignándole valores diferentes en el cuerpo?

Respuesta1

Para eso están exactamente las macros. Puede definir sus propias macros con \newcommand{\command}{<actions>}y redefinirlas con \renewcommand. Ambos comandos se pueden dar en cualquier parte del documento, por lo que podrías hacer algo como esto:

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

Respuesta2

Con elscontentspaquete es bastante fácil hacer lo que estás buscando. Todo almacenado en la memoria, por supuesto, si prefiere archivos externos, puede usar la versión del entorno y la clave write-env=file.texy además de almacenarlos en la memoria, puede tener el contenido en archivos separados y luego usarlos \input. Prefiero guardar en la memoria :)

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

información relacionada