2 つの用語集 (頭字語のリストと記号のリスト) を異なる方法で並べ替えるにはどうすればよいでしょうか?

2 つの用語集 (頭字語のリストと記号のリスト) を異なる方法で並べ替えるにはどうすればよいでしょうか?

このglossariesパッケージを使用して、頭字語のリストと記号のリストを作成します。

\usepackage[acronym,style=long]{glossaries}

シンボルのリストには標準用語集が使用されます。

ここで、頭字語のリストをアルファベット順 ( sort=standard) で並べ替え、記号のリストを出現順 ( sort=def) で並べ替えたいと考えています。どうすればいいでしょうか?

私は Windows 7 上で TeXnicCenter 2 (ベータ版) と MikTeX 2.9 を使用しています。私のプロジェクトにはhyperrefパッケージが含まれています。

答え1

アップデート:

glossariesバージョン 4.04 (CTAN にアップロードしたばかり)からは、用語集を生成するためのオプションが 3 つあります。

  1. TeX を使用して用語集を並べ替える (新機能)。
  2. makeindex用語集を並べ替えるために使用します。
  3. xindy用語集を並べ替えるために使用します。

オプション 2 と 3 では、異なる用語集に対して独立した並べ替え方法を使用することはできませんが、新しいオプションでは次のことが可能になります。

\documentclass{article}

\usepackage[acronyms]{glossaries}

\makenoidxglossaries

\newacronym{cd}{CD}{covariant derivative}
\newacronym{gr}{GR}{general relativity}
\newacronym{pnd}{PND}{principle null direction}

\newglossaryentry{vfield}{
  name={\ensuremath{A^a}},
  description={Some vector field}
}

\newglossaryentry{manifold}{
  name={\ensuremath{\mathcal{M}}},
  description={Some manifold}
}

\begin{document}

Einstein developed the theory of \gls{gr}. Take the \gls{cd} and
apply it on the \glspl{pnd}. We define \gls[format=textbf]{manifold} to be some
manifold.

\clearpage

\gls[format=textbf]{vfield} is some vector field on \gls{manifold}
that has nothing to do with the \glspl{pnd}.

\printnoidxglossary[type=acronym,sort=letter]

\printnoidxglossary[sort=use]

\end{document}

これには、LaTeX を 2 回実行するだけです ( または を使用する必要はありませxindymakeindex)。頭字語のリストは文字順にソートされ (datatool\dtlletterindexcompareハンドラーを使用)、メインの用語集は使用順にソートされます。その他のソート オプションは、word(datatool\dtlwordindexcompareハンドラーを使用した単語の順序)、def(定義の順序)、 (のハンドラーcaseを使用した大文字と小文字の区別)、および(のハンドラーを使用した大文字と小文字の区別なし) です。datatool\dtlcomparenocasedatatool\dtlicompare

ページ1:

1ページの画像

2ページ:

2ページの画像

主な欠点:

  • makeindexソートは/ を使用する場合よりも遅くなります(ソートを必要としない メソッドxindyを除く)。use
  • 連続した場所は範囲に変換されません (ただし、場所リストを表示するマクロを再定義することは可能です)。
  • エントリは環境の開始前に定義する必要がありますdocument

解決策datagidx:

これは私のオリジナルdatagidxの解決策です(データツールバンドル):

\documentclass{article}

\usepackage{datagidx}
\usepackage[colorlinks]{hyperref}

\newgidx{acronym}{Acronyms}
\newgidx{symbol}{Symbols}

\DTLgidxSetDefaultDB{acronym}

\newacro{html}{hypertext markup language}
\newacro{css}{cascading style sheet}
\newacro{xml}{extensible markup language}

\DTLgidxSetDefaultDB{symbol}

\newterm[description={sample 1}]{B}
\newterm[description={sample 2}]{X}
\newterm[description={sample 3}]{A}
\newterm[description={sample 4}]{C}

\begin{document}

\gls{B}, \gls{X}, \gls{C}, \gls{A}.

\acr{xml}, \acr{html}, \acr{css}.

% default sort is alphabetical
\printterms[database=acronym,columns=1,style=align]

% sort by definition (i.e. don't sort)

\printterms[database=symbol,sort={},columns=1,style=align]

\end{document}

結果:

結果の画像

答え2

ありがとう!実は、glossaries パッケージでそれを実行する方法を見つけました。とにかく、すべてのシンボルに対してコマンドを定義しているので、可能です...

\documentclass[a4paper,twoside,11pt]{article}

\usepackage[acronym,style=long,sanitize={sort=false}]{glossaries}   % acronyms and list of symbols
\makeglossaries

% sort symbol index in order of appearance
% warning: this is only valid for less than 1000 pages!
\makeatletter
\def\three@digits#1{\ifnum#1<100 0\ifnum#1<10 0\fi\fi\number#1}

% \nomNoPrint declares a new glossary entry
\newcommand{\nomNoPrint}[3]{\newglossaryentry{#1}{
    name={#2},
    symbol={#2},
    description={#3},
    sort={A\three@digits{\value{page}}}
    }\glsadd[format=hyperbf]{#1}}   
\makeatother

% \nom declares the entry and prints the symbol
\newcommand{\nom}[3]{\nomNoPrint{#1}{#2}{#3}#2}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% define some acronyms
\newacronym{cd}{CD}{covariant derivative}
\newacronym{pnd}{PND}{principle null direction}
\newacronym{gr}{GR}{general relativity}

% define some symbols
\newcommand{\manifoldDNA}{\ensuremath{\mathcal{M}}} % the do-not-add definition
\newcommand{\manifold}{\glsadd{manifold}\manifoldDNA}

\newcommand{\vfieldDNA}{\ensuremath{A^a}}
\newcommand{\vfield}{\glsadd{vfield}\vfieldDNA}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}

Einstein developed the theory of \gls{gr}. Take the \gls{cd} and apply it on the \glspl{pnd}. We define
\nom{manifold}{\manifoldDNA}{Some manifold}\ 
to be some manifold.

\clearpage

\nom{vfield}{\vfieldDNA}{Some vector field} is some vector field on \manifold\ that has nothing to do with the \glspl{pnd}.

\printglossary[type=\acronymtype]
\printglossary

\end{document}

すると次のようになります。

ここに画像の説明を入力してください

これは他のアプローチほど優れていません。同じページ番号が用語集に 2 回印刷されるのを避けるために、 コマンド\manifoldDNA\vfieldDNAコマンドを定義する必要があるためです (1 回は通常形式で、もう 1 回は太字で)。

関連情報