ayuda: buscando una sintaxis de mapa de matriz (variable) genérica (y elegante) para guardar cosas

ayuda: buscando una sintaxis de mapa de matriz (variable) genérica (y elegante) para guardar cosas

Mis disculpas si esto se ha discutido en otra parte, pero si así fue, no pude encontrarlo.

Soy autor de una plantilla de tesis académica para mi universidad, pero definitivamente no soy un experto en TeX. En esta plantilla hago un uso extensivo de archivos de configuración que utilizan un mapa de matriz ad-hoc (auto)definido. P.ej:

\arraymay{cover}
\cover{phd}={phd_cover_file.pdf}
\cover{msg}={msc_cover_file.pdf}
\arraymap{margin}
\margin{cover,left}={5cm}
\margin{cover,right}={5cm}
\margin{cover,top}={4cm}
\margin{cover,bottom}={4cm}
\margin{main,left}={3cm}
\margin{main,right}={3cm}
\margin{main,top}={2cm}
\margin{main,bottom}={2cm}

Las comas en las claves se utilizan para efectos visuales y se consideran un carácter normal, es decir, en “ \margin{cover,bottom}={2cm}” la clave es “ cover,bottom”.

Luego puedo acceder a los valores como en:

\def\manuscripttype{phd}
The cover file is ``\thecover[\manuscripttype]'' and the margins for the cover are ``\themargin[cover,left], \themargin[cover,right], \themargin[cover,top], and \themargin[cover,bottom].''

Producirá

The cover file is “phd_cover_file.pdf” and the margins for the cover are “3cm, 3cm, 2cm, and 2cm.”

¿Existe algún otro paquete (sólido) que implemente esta funcionalidad? Si no es así, ¿existe alguna forma sólida de implementarlo (tal vez basada en uno de los paquetes KV)? Gracias.

Respuesta1

Puedes hacerlo con pgfkeys:

\documentclass{article}
\usepackage[T1]{fontenc}

\usepackage{pgfkeys}

\pgfkeys{
  lourenco/.cd,
  cover/phd/.initial={},
  cover/msc/.initial={},
  margin/cover/left/.initial=0pt,
  margin/cover/right/.initial=0pt,
  margin/cover/top/.initial=0pt,
  margin/cover/bottom/.initial=0pt,
  margin/main/left/.initial=0pt,
  margin/main/right/.initial=0pt,
  margin/main/top/.initial=0pt,
  margin/main/bottom/.initial=0pt,
}

\newcommand{\setlourenco}[1]{\pgfkeys{lourenco/.cd,#1}}
\newcommand{\thecover}[1]{%
  \pgfkeysvalueof{/lourenco/cover/#1}%
}
\newcommand{\themargin}[1]{%
  \pgfkeysvalueof{/lourenco/margin/#1}%
}

%% settings
\setlourenco{
  cover/phd=phd-cover-file.pdf,
  cover/msc=msc-cover-file.pdf,
  margin/cover/left=5cm,
  margin/cover/right=5cm,
  margin/cover/top=4cm,
  margin/cover/bottom=4cm,
  margin/main/left=3cm,
  margin/main/right=3cm,
  margin/main/top=2cm,
  margin/main/bottom=2cm,
}

\def\manuscripttype{phd}

\begin{document}

The cover file is ``\thecover{\manuscripttype}'' and the margins 
for the cover are ``\themargin{cover/left}, \themargin{cover/right},
\themargin{cover/top}, and \themargin{cover/bottom}.''

\end{document}

ingrese la descripción de la imagen aquí

información relacionada