두 개의 용어집(약어 목록 및 기호 목록)을 어떻게 다르게 정렬합니까?

두 개의 용어집(약어 목록 및 기호 목록)을 어떻게 다르게 정렬합니까?

저는 이 glossaries패키지를 사용하여 약어 목록과 기호 목록을 만듭니다.

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

기호 목록에는 표준 용어집이 사용됩니다.

sort=standard이제 약어 목록을 알파벳순( )으로 정렬하고 기호 목록은 나타나는 순서( )로 정렬하려고 합니다 sort=def. 어떻게 해야 하나요?

Windows 7에서 TeXnicCenter 2(베타)와 함께 MikTeX 2.9를 사용합니다. 내 프로젝트에 hyperref패키지가 포함되어 있습니다.

답변1

업데이트:

glossaries버전 4.04(방금 CTAN에 업로드함) 부터 용어집 생성을 위한 세 가지 옵션이 있습니다.

  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}

xindyLaTeX를 두 번만 실행하면 됩니다( 또는 를 사용할 필요 없음 makeindex). 약어 목록은 문자별로 정렬되며( datatool\dtlletterindexcompare핸들러를 사용하여) 주요 용어집은 용도에 따라 정렬됩니다. 다른 정렬 옵션으로는 ( 의 핸들러를 word사용한 단어 순서 ), ( 정의의 순서), ( 의 핸들러를 사용한 대소문자 구분) 및 ( 의 핸들러 를 사용한 대소문자 구분 없음 )이 있습니다.datatool\dtlwordindexcomparedefcasedatatool\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

감사해요! 실제로 저는 용어집 패키지를 사용하여 그 일을 수행하는 방법을 찾았습니다. 어쨌든 모든 기호에 대한 명령을 정의하므로 가능합니다.

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

그러면 다음과 같습니다.

여기에 이미지 설명을 입력하세요

동일한 페이지 번호가 용어집에서 두 번 인쇄되는 것을 방지하기 위해 \manifoldDNA및 명령을 정의해야 하기 때문에 다른 접근 방식만큼 좋지 않습니다 (한 번은 일반 유형, 한 번은 굵은 유형).\vfieldDNA

관련 정보