Paqueteacronym

Paqueteacronym

Quiero usar index junto con acro: cada vez que uso un acrónimo, lo quiero automáticamente en el índice. ¡Sin embargo, no la abreviatura sino el nombre largo!

Lo que hice: creé un nuevo comando:

\newcommand{\acidx}[1]{\ac{#1}\index{\acl*{#1}}}

Esto funciona. Sin embargo, el látex no expande la macro acl.antesescribiendo el archivo ind! Mezclando indexy acidx` el contenido del archivo idx es:

\begin{theindex}
  \item \texttt  {\acl *{ABC}}, \hyperpage{2}
  \item \texttt  {\acl *{DEF}}, \hyperpage{1, 2}
  \indexspace
  \item consetetur, \hyperpage{1}
\end{theindex}

Se puede observar que los elementos de acidxestán agrupados. Supongo que porque \aclno se amplió. Si así fuera, estaría debidamente clasificado.

Para aliviar el problema, intenté

\newcommand{\acidx}[1]{\ac{#1}\index{#1@\acl*{#1}}}

Sin embargo, esto no es del todo claro porque (a mi entender), el índice ahora está ordenado según la abreviatura en lugar del nombre completo; por ejemplo, para PHP se ordenaría según PHP en lugar de "Preprocesador de hipertexto". Además, al hacer esto, cada entrada está separada por \indexspaceun código que tampoco es correcto.

¿Hay alguna manera de forzar que el índice expanda la macro antes de escribir el archivo ind?

¿Existe otra forma de solucionar el problema?

¡Realmente me gustaría evitar el uso de un procesador de índice diferente como xindy!

Respuesta1

Paqueteacronym

La versión interna expandible de \acles \AC@acl. Luego, \indexdentro de la macro \acidxse escribirá la versión larga ampliada del acrónimo:

\documentclass{article}
\usepackage{acronym}
\usepackage{makeidx}
\makeindex

\makeatletter
\newcommand*{\acidx}[1]{%
  \ac{#1}\index{\AC@acl{#1}}%
}
\makeatother

\acrodef{ABC}{alphabet}
\acrodef{DEF}{definition}

\begin{document}

The \acidx{ABC} contains all\index{all} letters. The \acidx{DEF}
is written with the help of the \acidx{ABC}.

\printindex

\end{document}

Página 1

Y el índice:

Página 2

El .idxarchivo:

\indexentry{alphabet}{1}
\indexentry{all}{1}
\indexentry{definition}{1}
\indexentry{alphabet}{1}

Paqueteacro

Lo mismo ocurre con el paquete acro, que está basado en LaTeX3. \prop_get:NnNFobtiene la propiedad \l__acro_long_propde la lista de datos para el acrónimo id #1y almacena el resultado en \l__acro_long_tl(consulte la definición de \acro_get:n). La variable de lista de tokens de resultados \l__acro_long_tlse puede utilizar en \index:

\documentclass{article}
\usepackage{acro}
\usepackage{makeidx}
\makeindex

\ExplSyntaxOn
\newcommand*{\acidx}[1]{%
  \ac{#1}%
  \prop_get:NnNF \l__acro_long_prop {#1} \l__acro_long_tl {}
  \index{\l__acro_long_tl}%
}
\ExplSyntaxOff

\DeclareAcronym{ABC}{short=ABC, long=alphabet}
\DeclareAcronym{DEF}{short=DEF, long=definition}

\begin{document}

The \acidx{ABC} contains all\index{all} letters. The \acidx{DEF}
is written with the help of the \acidx{ABC}.

\printindex

\end{document}

información relacionada