このglossaries
パッケージを使用して、頭字語のリストと記号のリストを作成します。
\usepackage[acronym,style=long]{glossaries}
シンボルのリストには標準用語集が使用されます。
ここで、頭字語のリストをアルファベット順 ( sort=standard
) で並べ替え、記号のリストを出現順 ( sort=def
) で並べ替えたいと考えています。どうすればいいでしょうか?
私は Windows 7 上で TeXnicCenter 2 (ベータ版) と MikTeX 2.9 を使用しています。私のプロジェクトにはhyperref
パッケージが含まれています。
答え1
アップデート:
glossaries
バージョン 4.04 (CTAN にアップロードしたばかり)からは、用語集を生成するためのオプションが 3 つあります。
- TeX を使用して用語集を並べ替える (新機能)。
makeindex
用語集を並べ替えるために使用します。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 回実行するだけです ( または を使用する必要はありませxindy
んmakeindex
)。頭字語のリストは文字順にソートされ (datatool
の\dtlletterindexcompare
ハンドラーを使用)、メインの用語集は使用順にソートされます。その他のソート オプションは、word
(datatool
の\dtlwordindexcompare
ハンドラーを使用した単語の順序)、def
(定義の順序)、 (のハンドラーcase
を使用した大文字と小文字の区別)、および(のハンドラーを使用した大文字と小文字の区別なし) です。datatool
\dtlcompare
nocase
datatool
\dtlicompare
ページ1:
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 回は太字で)。