0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SATySFi のrefコマンドでうまく引用できないとき

Posted at

対象者

  • \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`);}){

}

と書き、コンパイルすると
Screen Shot 2022-03-23 at 17.53.30.png
となる。

aux ファイルの構造を参考にして、次のように書いてみる。

+proof?:({\ref(`theorem:hey`);}){

}

コンパイルすると、
Screen Shot 2022-03-23 at 18.03.45.png
と表示される。うまくいった。

まとめ

  • theorem にラベルを登録すると、定理番号は、.satysfi-aux ファイルに "theorem:(ラベル名):num" で .satysfi-aux ファイルに登録されている。
  • "(コマンド名):(ラベル名)" を \ref に渡すとうまく表示される。(lemma や definition でも同じ。)
  • 困ったら aux ファイルやソースコードを見よう。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?