Paketacronym

Paketacronym

Ich möchte Index zusammen mit Akronym verwenden: Immer wenn ich ein Akronym verwende, möchte ich es automatisch im Index haben. Allerdings nicht die Abkürzung, sondern den Langnamen!

Was ich getan habe: Ich habe einen neuen Befehl erstellt:

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

Das funktioniert. Latex erweitert das ACL-Makro jedoch nichtVorSchreiben der ind-Datei! Mischen indexund acidx` Der Inhalt der idx-Datei ist:

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

Man kann sehen, dass die Elemente von acidxgruppiert sind. Ich nehme an, weil \aclnicht erweitert wurde. Wenn es das wäre, wäre es richtig sortiert.

Um das Problem zu lindern, habe ich versucht

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

Das ist allerdings nicht ganz sauber, da (soweit ich weiß) der Index nun nach der Abkürzung und nicht nach dem vollständigen Namen sortiert wird, also bei PHP z.B. nach PHP und nicht nach "Hypertext Preprocessor". Außerdem werden dabei alle Einträge durch getrennt, \indexspacewas auch nicht korrekt ist.

Gibt es eine Möglichkeit, den Index zu zwingen, das Makro zu erweitern, bevor die IND-Datei geschrieben wird?

Gibt es eine andere Möglichkeit, das Problem zu beheben?

Ich möchte die Verwendung eines anderen Indexprozessors wie xindy wirklich vermeiden!

Antwort1

Paketacronym

Die interne erweiterbare Version von \aclist \AC@acl. Anschließend schreibt \indexdas Makro \acidxdie erweiterte Langversion des Akronyms:

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

Seite 1

Und der Index:

Seite 2

Die .idxDatei:

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

Paketacro

Dasselbe gilt für das Paket acro, das auf LaTeX3 basiert. \prop_get:NnNFRuft die Eigenschaft \l__acro_long_propaus der Datenliste für die Akronym-ID ab #1und speichert das Ergebnis in \l__acro_long_tl, siehe die Definition von \acro_get:n). Die Ergebnis-Token-Listenvariable \l__acro_long_tlkann dann in verwendet werden \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}

verwandte Informationen