
¿Existe algún comando capaz de convertir una entrada en numeración secuencial (y cuando esa entrada se use nuevamente, el comando recuperará el número asignado previamente)?
Contexto: Tengo varios experimentos científicos discutidos. En el archivo TEX de origen, estoy usando el número de experimento referido a mi cuaderno de laboratorio, pero en el PDF final me gustaría que estuvieran numerados secuencialmente. Claramente, me gustaría que se usara el mismo número para el mismo experimento. La primera vez que se mencione el experimento deberá recibir un nuevo número progresivo, en caso contrario deberá recordar el número que le fue asignado.
% the \magicnumbering is a command name that I invented for this purpose!
\documentclass{report}
\begin{document}
I did \magicnumbering{experimentA} before \magicnumbering{experimentB}, but \magicnumbering{experimentC} was done even before \magicnumbering{experimentA}.
\end{document}
Me gustaría imprimir este MWE:
Hice 1 antes que 2, pero 3 lo hice incluso antes que 1.
Estoy seguro de que hay una solución muy sencilla que no encuentro. Perdón por mi ignorancia, ojalá pudieras ayudar.
Respuesta1
Lo siguiente hace esto almacenando las claves en una lista de propiedades (usando expl3
). Para cambiar el formato de la salida, puede cambiar la definición de \magicnumbering_output:n
.
\documentclass[]{report}
\ExplSyntaxOn
\prop_new:N \g_magicnumbering_numbers_prop
\int_new:N \g_magicnumbering_current_int
\tl_new:N \l_magicnumbering_output_tl
\cs_new_protected:Npn \magicnumbering_output:n #1
{
#1
}
\cs_generate_variant:Nn \magicnumbering_output:n { V }
\cs_new_protected:Npn \magicnumbering_parse:n #1
{
\prop_get:NnNTF
\g_magicnumbering_numbers_prop {#1} \l_magicnumbering_output_tl
{ \magicnumbering_output:V \l_magicnumbering_output_tl }
{
\int_gincr:N \g_magicnumbering_current_int
\prop_put:NnV
\g_magicnumbering_numbers_prop {#1} \g_magicnumbering_current_int
\magicnumbering_output:V \g_magicnumbering_current_int
}
}
\NewDocumentCommand \magicnumbering { m } { \magicnumbering_parse:n {#1} }
\ExplSyntaxOff
\begin{document}
I did \magicnumbering{experimentA} before \magicnumbering{experimentB}, but
\magicnumbering{experimentC} was done even before
\magicnumbering{experimentA}.
\end{document}