SATySFi のrefコマンドでうまく引用できないとき
対象者
- \theorem, \lemma などにラベルをつけたけど、\ref にラベルを渡してもうまく表示されない人
- 久しぶりにSATySFiを使って書く自分
SATySFi の version
$ satysfi -v
SATySFi version 0.0.6
SATySFi のソースを見てみよう
stdjareport.satyh での実装は次のようになっている。
let-inline ctx \ref key =
let opt = get-cross-reference (key ^ `:num`) in
let it =
match opt with
| None -> {?}
| Some(s) -> embed-string s
in
inline-frame-breakable no-pads (Annot.link-to-location-frame key None) (read-inline ctx it)
\ref(key); で渡した文字列 key の末尾に ":num" という文字列を追加して検索をするようだ。
(ファイル名).satysfi-aux ファイルを見る
{"generated:4:num":"0.1.3","generated:6:num":"0.2","generated:1:page":"1",
...,
"theorem:hey:num":"0.2.7","generated:9:num":"0.2.8",...
}
色々あるけど、\theorem でラベルを登録すると、"theorem:(ラベル名):num" という形になるようだ。
解決策
例えば、hey というラベルで登録した定理 0.2.7 の定理番号を、+proof の冒頭で書きたいとする。
+proof?:({\ref(`hey`);}){
}
aux ファイルの構造を参考にして、次のように書いてみる。
+proof?:({\ref(`theorem:hey`);}){
}
まとめ
- theorem にラベルを登録すると、定理番号は、.satysfi-aux ファイルに "theorem:(ラベル名):num" で .satysfi-aux ファイルに登録されている。
- "(コマンド名):(ラベル名)" を \ref に渡すとうまく表示される。(lemma や definition でも同じ。)
- 困ったら aux ファイルやソースコードを見よう。
Author And Source
この問題について(SATySFi のrefコマンドでうまく引用できないとき), 我々は、より多くの情報をここで見つけました https://qiita.com/Reyon62/items/ab82e3c38122fe82f991著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .