パッケージacronym

パッケージacronym

インデックスをアクロと一緒に使用したい: 頭字語を使用するたびに、それを自動的にインデックスに追加したい。ただし、略語ではなく長い名前です。

私がしたこと: 新しいコマンドを作成しました:

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

これは動作します。ただし、LaTeXはACLマクロを展開しません。前にind ファイルの書き込み! indexidx ファイルの内容は、acidx と mixx で次のようになります。

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

の要素がグループ化されていることがわかりますacidx。 が展開されていないためだと思います\acl。 展開されていれば、適切にソートされます。

この問題を軽減するために、私は

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

しかし、これはあまりきれいではありません。なぜなら、(私の理解では) インデックスは完全な名前ではなく略語に従ってソートされるようになったためです。たとえば、PHP の場合は、「Hypertext Preprocessor」ではなく PHP に従ってソートされます。さらに、これを行うと、すべてのエントリが で区切られますが、\indexspaceこれも正しくありません。

ind ファイルを書き込む前に、インデックスにマクロを強制的に展開させる方法はありますか?

問題を解決する別の方法はありますか?

xindy のような別のインデックス プロセッサの使用は避けたいと思います。

答え1

パッケージacronym

の内部展開可能なバージョン\aclは です\AC@acl。次に、\indexマクロ内では、\acidx頭字語の展開された長いバージョンが書き込まれます。

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

ページ1

そしてインデックス:

2ページ

ファイル.idx

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

パッケージacro

acroLaTeX3 に基づく パッケージ も同様です。 は、頭字語 ID のデータ リストから\prop_get:NnNFプロパティを取得し、その結果を に格納します (の定義を参照)。結果トークン リスト変数は、 で使用できます。\l__acro_long_prop#1\l__acro_long_tl\acro_get:n\l__acro_long_tl\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}

関連情報