相互参照で\ref
するときには次のようにする.
contentType~\ref{labelName}
このとき,contentType
をいちいち打つのは面倒であり,これを変更する必要がある場合にはさらに面倒なことになる.これは自動化しておきたい.
また,数式に関しては相互参照した数式のみに式番号を付与すべきである.
この2つを同時に実現するには次のようなcleveref とautonum を組み合わせた方法が良く知られている.
世の中にはすでにcleveref+autonum というような上手な相互参照の方法が普及している.
しかしながら,autonum は少々厄介なように思う. と言うのは,次のような制約があると思うからである.
- autonum がサポートしている数式環境しか式番号を操作できない
- 参照しないが式番号を付与したい数式はequation+ 環境のみ
ここで,autonum に似たmathtools から提供されているshowonlyrefs オプションを確認しておきたい.
ただし,このmathtools によるshowonlyrefs はcleveref と並列に利用できないことに注意しておきたい.
参照した数式のみに式番号を付与したい場合にはmathtools のshowonlyrefs オプションを使用することもある.
\mathtoolsset{showonlyrefs}
\eqref
や\refeq
で参照された数式に式番号を付与することが出来る.
これに加えて,\noeqref
を使うことで参照しない数式にも式番号を付与することも出来る.
showonlyrefs ではautonum での制約がないものとなっていると思われる.
v0.1.1-alpha, released 2021-12-07
Caution: まだリリースされたばかりであり,使用が変更される場合があることに注意が必要になる.
zref を利用したclever な相互参照を実現する.
次のようにプリアンブルで読み込めば良い.
日本語はデフォルトで対応していないので,japanese
とエイリアスのja
を定義しておいた.
本来はbabel やpolyglossia を利用することで自動的に対応されるようだが,ちょっとヨクワカラナイのでスルーしておく.(手動でも対応できるので尚更)
\usepackage[nameinlink,preposinlink,lang=ja]{zref-clever}
\zcDeclareLanguage[allcaps]{japanese}
\zcDeclareLanguageAlias{ja}{japanese}
\usepackage{hyperref}
今回は,オプションでnameinlink
を与えている.これはcleveref と同じ仕様のものであり,ハイパーリンクを式
や定理
などの参照のタイプ名を含めて埋め込むようにしている.
また,preposinlink
としておくことで,相互参照番号の前後の文字(丸括弧など) にもハイパーリンクを埋め込むようにしている.
\zcDeclareLanguage
で日本語を宣言しており,allcaps
オプションによって大文字小文字の違いがない(大文字のみ) の設定をしている.
zref-clever では\zcLanguageSetup
から各タイプごとにEq.
などを日本語に変更する.
しかしながら,やたら長くなるためにプリアンブルが煩雑になってしまう.ちょっと面倒くさい.
sty ファイルのあるディレクトリを漁ってみると,サポートされている言語ごとに.dict
ファイルが作成されているようだ.また,試してみるとカレントディレクトリでも読んでくれるみたいだ.
したがって,次のようなファイルをカレントディレクトリにおいた. zref-clever-english.dict を改造したものなので,上手い翻訳が分からないものに関してはそのままとなっている.
この下にあるファイル: zref-clever-japanese.dict
Suffix | Meaning |
---|---|
-sg |
単数形 |
-pl |
複数形 |
-ab |
省略形 |
zref を利用しているため,通常のラベルには\zlabel
を使う必要がある.また,これを参照するには\zcref
を利用する.
しかし,数式環境では少し勝手が異なり,\label
を利用する.ここでも同じように参照は\zcref
で行う.
zref-clever ではmathtools のshowonlyrefs と並列して利用することが出来る.
\usepackage{mathtools}
\mathtoolsset{showonlyrefs}
参照方法も\zcref
のままで大丈夫である.
このパッケージの謝辞を見ると,cleveref を強く意識していることが分かる.
The name of the package makes no secret that a major inspiration for the kind of “feel” I strove to achieve has been Toby Cubitt’s
cleveref
. Indeed, I have been an user ofcleveref
for several years, and a happy one at that. But the rolecleveref
played in the development ofzref-clever
extends beyond the visible influence in the design of user facing functionality. Some technical solutions and, specially, the handling of support for other packages were a valuable reference. Hence, the accumulated experience ofcleveref
allowed forzref-clever
to start on a more solid foundation than would otherwise be the case.Quoted: The
zref-clever
package User manual (v0.1.1-alpha, released 2021-12-07) §14 Acknowledgments
もっと上手に使える人がいれば,いい感じに記事にしてください:pray:
mathtools のshowonlyrefs を使いたいけどcleveref が使えない人は是非に.