Abbreviations with LaTeX

紹介

多くの参考文献を扱う学術論文においては、本論中で参照した文献の正確な情報を論文末尾に一括して掲載するのが普通である。本論で言及されている論文が末尾の参考文献表にない、という指摘は論文諮問の場で多くの人が経験している (?!) かもしれない。参考文献に関しては BibTeX を使用していればこの心配はない。本論中で cite 等のマクロを利用して文献を引用すれば、手入力のようなミスは無く文献情報を出力してくれる。文献データベースにない資料を引用すれば LaTeX がエラーを吐く。

私は文献学に携わっているので特に、本論中で多くの出典に言及しなければならない。それらの出典は初出にフルネームで言及した後は、略号 (Abbreviation) で指し示すのが通例である。そして、参考文献表とは別に論文冒頭か末尾に一括して略号表を作成する。

LaTeX で略号を扱うには、いくつか選択肢があるが (cf. CTAN, TeX Catalogue, Creating Indices and Glossaries)、以下では glossaries パッケージの使用法を簡単にメモしておく。

Glossaries

Glossary

まずはもっとも基本的な使用方法から。次のような形式で用語のエントリーを作成する。これらはプリアンブルに記述してもよいが、ここでは別のファイルに保存したとする。

newglossaryentry{label 1}{definition 1}
newglossaryentry{label 2}{definition 2}
...

これを例えばファイル名 gls.tex で保存したとすると、マスターファイルのプリアンブルには、

usepackage{glossaries}
loadglsentries{gls}
makeglossaries

と書いておく。本文中では gls{label} と入力して登録した用語を引用する。用語集を出力したい場所に、

printglossaries

と書く。具体的な例を示す。

gls.tex:

% Glossaries

newglossaryentry{bup}{name=Buddhapālita,%
description={仏護}}

newglossaryentry{bhav}{name=Bhāviveka,%
description={清弁}}

newglossaryentry{can}{name=Candrakīrti,%
description={月称}}

newglossaryentry{nag}{name=Nāgārjuna,%
description={竜樹}}

newglossaryentry{pin}{name=Pingala,%
description={青目}}

newglossaryentry{sthi}{name=Sthiramati,%
description={安慧}}

gloss-test.tex:

% -*- coding: utf-8; -*-
% platex -kanji=utf8 (TeX Live 2010/Fink)
documentclass[a4j,11pt]{jsarticle}
usepackage[T1]{fontenc}
usepackage{txfonts}
usepackage[setpagesize=false,dvipdfm,%
colorlinks,linkcolor=blue]{hyperref}
usepackage{glossaries}    % <-- hyperref より後!
loadglsentries{gls.utf}   % <-- TeX シンボルに変換
makeglossaries

begin{document}

section{語彙}

『中論』は gls{nag} の主著であり、詩頌のみで構成される。『中論』の注釈書としては、
gls{nag} 自身によるものと伝承される『無畏論』や、gls{bup} による『仏護注』、
gls{pin} による漢訳『中論』、gls{sthi} による『大乗中観釈論』、gls{bhav} によ
る『般若灯論』、gls{can} による『明句論』などが有名である。

printglossaries

end{document}

上記の例の gls.tex には「ā」などの Unicode 文字が含まれており inputenc パッケージで処理できそうだが platex ではうまく通らなかった1utf82tex 等を利用して TeX シンボルに変換しておく。

$ utf82tex -x gls.tex > gls.utf

コンパイルは以下のように行う。

$ platex -kanji=utf8 gloss-test.tex
$ makeglossaries gloss-test
$ platex -kanji=utf8 gloss-test.tex
$ dvipdfmx gloss-test
$ open gloss-test.pdf

出力結果は以下の通り。

gloss-test.pdf:

https://skalldan.files.wordpress.com/2011/08/wpid-gloss1.png

https://skalldan.files.wordpress.com/2011/08/wpid-gloss_2.png

loadglsentries (や input) で呼び出される用語のエントリーが登録されたファイル (上の例では gls.tex) は、TEXMF tree (kpsewhich -var-value TEXMF 等で返る path) におけば読み込んでくれるようなので、BibTeX ファイルのように予め頻繁に使用する用語の一覧を ~/texmf 以下などに作成しておけば他の TeX 文書でも転用が効く。

Acronyms

オプションに acronym を指定することで先ほどの Glossary とは別に頭字語 (acronym) の一覧を出力することができる。先ほど同様 newglossaryentry で作成してもいいが、頭字語専用の簡略化されたコマンドが用意されている。

newacronym{label}{name}{definition}

プリアンブルには次のように書いておく。

usepackage[acronym,shortcuts]{glossaries}

shortcuts オプションにより acs{label} (acronyms short) や acl{label} (acronyms long) のマクロが使用可能となる。

具体的な例を示す。

acr.tex:

% General Abbreviations

newacronym{als}{ALS}{Adyar Library Series}

newacronym{chin}{Chin.}{Chinese}

newacronym{iij}{IIJ}{emph{Indo-Iranian Journal}}

newacronym{ms}{MS}{Manuscript}

newacronym{tib}{Tib.}{Tibetan}

newacronym{skt}{Skt.}{Sanskrit}

abbr-test.tex:

% -*- coding: utf-8; -*-
% platex -kanji=utf8 (TeX Live 2010/Fink)
documentclass[a4j,11pt]{jsarticle}
usepackage[utf8x]{inputenc}
usepackage[T1]{fontenc}
usepackage{txfonts}
usepackage[french,english,japanese]{babel}
usepackage[setpagesize=false,dvipdfm,%
colorlinks,linkcolor=blue]{hyperref}
usepackage[acronym,shortcuts]{glossaries}
loadglsentries[main]{gls.utf}    % <-- TeX シンボルに変換
loadglsentries[acronym]{acr}     % option でタイプ (acronym) を指定
makeglossaries

begin{document}

% ... (省略) ...

section{略号}

『中論』 (acs{skt} {em Mūlamadhyamakakārikā}; acs{tib} {em dBu ma rtsa ba'i
tshig le'ur byas pa śes rab ces bya ba}; acs{chin}『中論』) は J. W. de Jong に
よるサンスクリットエディション (``{em Nāgārjuna, Mūlamadhyamakakārikāḥ},''
acs{als} 109, 1977) が用いられることが多いが、これは注釈書 {em Prasannapadā} の
写本 (new Nepalese acs{ms}) に基づいて、偈頌部分だけ抽出した校訂本である。この校
訂本の書評は D. Seyfort Ruegg によって行われている (acs{iij}, 22(3), 1980,
pp.~247--249)。

printglossary[type=main]
printglossary[type=acronym,nonumberlist,%
title={General Abbreviations},toctitle={General Abbreviations}]  % <-- title と toctitle を変更 (default: Acronyms)

end{document}

オプション nonumberlist によって本論中に現れる用語のページ番号を出力しない。

このファイルを先と同様にコンパイルする。

abbr-test.pdf:

https://skalldan.files.wordpress.com/2011/08/wpid-abbr.png

https://skalldan.files.wordpress.com/2011/08/wpid-abbr_2.png

Multiple Glossaries

独自の用語リストを作ることもできる。

newglossary{label}{in-ext}{out-ext}{title}

で新しいリストのタイプを定義する。例えば「出典」(Sources) のリストを作成したかったとすると、

newglossary{sources}{src}{sc}{Sources}

というように定義する。入力の拡張子 (src) と出力の拡張子 (sc) は別のものを指定する。以下具体的な例を示す。

src.tex:

% Sources
% define a new glossary type: "sources"
newglossary{sources}{src}{sc}{Sources}   % <--- type "sources" を定義

newglossaryentry{abh}{type=sources,name=ABh,%  <--- type=sources と指定
description={emph{Mūlamadhyamaka-vṛtty-akutobhayā}},
first={emph{Akutobhayā} (ABh)}}    % <--- 最初に現れる表記

newglossaryentry{bp}{type=sources,name=BP,%
description={emph{Buddhapālita-mūlamadhyamaka-vṛtti}},
first={emph{Buddhapālita-vṛtti} (BP)}}

newglossaryentry{d}{type=sources,name=D,%
description={Derge (sDe dge) blockprint edition of Tibetan Tripiṭaka}}

newglossaryentry{mmk}{type=sources,name=MMK,%
description={emph{Mūlamadhyamakakārikā} of Nāgārjuna},%
first={emph{Mūlamadhyamakakārikā} (MMK)}}

newglossaryentry{p}{type=sources,name=P,%
description={Peking blockprint edition of Tibetan Tripiṭaka}}

newglossaryentry{psp}{type=sources,name=PSP,%
description={emph{Prasannapadā} of Candrakīrti},%
first={emph{Prasannapadā} (PSP)}}

newglossaryentry{ppr}{type=sources,name=PPr,%
description={emph{Prajñāpradīpa-mūlamadhyamaka-vṛtti} of Bhāviveka},%
first={emph{Prajñāpradīpa}} (PPr)}

newglossaryentry{t}{type=sources,name=T,%
description={Taishō Shinshū Daizōkyō 大正新脩大藏經}}

first にはその語が最初に現れたときの表記を指定する。二回目以降は省略形が用いられる。

src-test.tex:

% -*- coding: utf-8; -*-
% platex -kanji=utf8 (TeX Live 2010/Fink)
documentclass[a4j,11pt]{jsarticle}
usepackage[deluxe,multi]{otf}
usepackage[utf8x]{inputenc}
usepackage[T1]{fontenc}
usepackage{txfonts}
usepackage[french,japanese,english]{babel}
usepackage[setpagesize=false,dvipdfm,%
colorlinks,linkcolor=blue]{hyperref}
usepackage[acronym,toc,shortcuts]{glossaries}   % <-- toc に追加
loadglsentries[main]{gls.utf}   % <-- TeX シンボルに変換
loadglsentries[acronym]{acr}
loadglsentries[sources]{src.utf}   % <-- TeX シンボルに変換, option でタイプ (sources) を指定

makeglossaries

begin{document}
tableofcontents

% ... (省略) ...

section{出典}

gls{mmk} は gls{nag} の主著であり、詩頌のみで構成される。gls{mmk} の注釈書とし
ては、gls{nag} 自身によるものと伝承される gls{abh} や、gls{bup} による
gls{bp}、gls{pin} による漢訳『中論』、gls{sthi} による『大乗中観釈論』、
gls{bhav} による gls{ppr}、gls{can} による gls{psp} などが有名である。

begin{description}
      item[gls{mmk}] gls{d} 3824, gls{p} 5224.
      item[gls{abh}] gls{d} 3829, gls{p} 5229.
      item[gls{bp}]  gls{d} 3842, gls{p} 5242.
      item[青目註中論] gls{t} 30, 1564.
      item[大乗中観釈論] gls{t} 30, 1567.
      item[gls{ppr}]  gls{d} 3853, gls{p} 5253.
      item[gls{psp}] gls{d} 3860, gls{p} 5260.
end{description}

printglossary[type=main,style=super]  % <-- style "super"
printglossary[type=acronym,style=list,nonumberlist,%  <-- style "list"
title={General Abbreviations},toctitle={General Abbreviations}]
printglossary[type=source,style=tree,nonumberlist]   % <-- style "tree"

end{document}

オプション toc で目次に Glossary 等が出力される。オプション style で用語リストのスタイルを指定できる。Glossaries パッケージの詳細なマニュアルにあるように、予め多くの style が用意されている (Glossary Styles)。

src-test.pdf:

https://skalldan.files.wordpress.com/2011/08/wpid-src.png

https://skalldan.files.wordpress.com/2011/08/wpid-src_21.png

出力結果にあるように、はじめに言及されたときだけ first で定義したフルネームが表示されている。これらは glsreset{label}glsresetall でリセットされ、直後の用語は再びフルネームで表示される。

添え字などを含む略号も簡単なラベルで定義しておけば、視覚性が向上し入力ミスも少なくなるかもしれない。

subsection{Subscript}

gls{mmkms}, gls{mmktib}, gls{mmkch}

https://skalldan.files.wordpress.com/2011/08/wpid-subscript_11.png

https://skalldan.files.wordpress.com/2011/08/wpid-subscript_21.png

Xindy (Devanāgarī の索引)

makeglossaries の代わりに xindy を使用することもできる2。その場合オプションに、

usepackage[xindy]{glossaries}

と指定しておいて、

$ xindy -L english -I xindy -M foo -t foo.glg -o foo.gls foo.glo

と実行する (ファイル名 “foo.tex” の場合)。複数の言語のソートに対応しており (cf. xindy-man.pdf)、Hindi の module も beta 版ながら実用レベルまで来ているようだ (xindy-devanagari)。デーヴァナーガリー文字で編集した文書を XeTeX (や LuaTeX) で組版し xindy で索引作成、ということも可能となる。

以下に XeTeX と xindy を使用した出力例を張っておく。

https://skalldan.files.wordpress.com/2011/08/wpid-dev_xindy3.png

glossaries パッケージは非常に多機能でマニュアルも膨大であるが (v.3.01, 109 ページ)、入門用の手引きも用意されている (glossariesbegin.pdf)。

設定例

latexmk

latexmk 設定ファイル (~/.latexmkrc) に次のように書いておけば makeglossaries の処理も適切に行ってくれるようだ。

add_cus_dep('glo', 'gls', 0, 'makeglo2gls');
add_cus_dep('acn', 'acr', 0, 'makeglo2gls');
sub makeglo2gls {
        system("makeglossaries $_[0]");
}

emacs

AUCTeX の場合次のようにショートカットを作成しておくと便利かもしれない。

(defun LaTeX-insert-gls ()
    "Insert a gls{} macro in a LaTeX-document."
    (interactive)
    (TeX-insert-macro "gls"))

(defun my-auctex-keys ()
    "Some local modifications to AucTeX keybindings."
    (interactive)
    (local-set-key "C-cG" 'LaTeX-insert-gls)  ; 適宜変更
;;   ...                                       ; 適宜追加
    )

(add-hook 'LaTeX-mode-hook
          (lambda ()
            (my-auctex-keys)
            ))

RefTeX で対応されれば更に便利になるだろうが、実現には今しばらくかかりそうだ (cf. glossaries style file for RefTeX)。

Footnotes:

1 latex, pdflatex, xelatex では問題なかった。

2 makeindex (mendex) でも可能。

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s