2016年3月1日

ConTeXtで遊ぶ (5)

参照をしてみる.

参照

こんな感じでできます.

\starttext
\section[Introduction]{Introduction of this text}
……

In \in{Section}[Introduction]...
\stoptext

コンパイルは一回で十分です.割とそれっぽいものに[reference]とつけると後からreferenceで参照できます.参照は\inを使います.\in[label]で節番号とかのそれっぽい番号が出る.上では\in{Section}[Introduction]としてSection 1と出しています.\in{A}{B}[label]はA番号Bとだいたい出るみたいです.

他にも参照するための命令があります.

  • \at:ページを参照します.\inと同様\at{A}{B}[label]とできます.
  • \about:上の例では,\about[Introduction]とすると``Introduction of this text''と出ます.\about{A}{B}[label]とは書けません.

\aboutで出る文字列の前後は\setupreferencingで変更できます.

\setupreferencing[left=(,right=)] % (Introduction of this text) となる

参照先を作る命令もあります.

  • \pagereference[reference]: 後からreferenceでページ番号を参照できるようになります(後から\atで引用できる).
  • \textreference[reference]{text}: 後からrerenceでページ番号とtextを参照できるようになります.\atはページ番号になり,\inはtext,\aboutは``text''になる.

たとえばこんな感じ.

\starttext
\pagereference[reference] I have a pen.
...
As I said on \at{page}[reference], I have a pen.
\stoptext

これらの参照先はカンマ区切りのリストとして扱われます.たとえば,

\starttext
\section[ref1,ref2]{Section}
\in{Section}[ref1] ....
\in{Section}[ref2] .... % これでも参照できる
\stoptext
みたいな感じです.

\somewhere

\somewhere{A}{B}[reference]は現時点よりもreferenceが前にあればAに,後ろにあればBになります.ちょっとおもしろい.

\starttext
\starttext
\section[sec:1]{Section 1}
\somewhere{before}{after}[sec:1] % beforeになる
\somewhere{before}{after}[sec:2] % afterになる
\section[sec:2]{Section 2}
\stoptext

他のファイルを参照

次のようにfile.texを用意し,コンパイルを済ませておく.

% file.tex
\starttext
\section[sample]{Sample}
In this section, ...
\stoptext

この中のsampleを次のようにして参照できる.

\starttext
In \in{Section}[file::sample] % (ファイル名)::(ラベル)でアクセスできる
\stoptext

新しい参照命令

\inとかみたいなのを新しく作ることもできます.たとえば数式用の\ineqは次のように作れます.

\starttext
\definereferenceformat[ineq][ % \ineqを定義する
    left=(,right=), % 参照するときに()で囲む
    text=equation
] % 
\placeformula[eq:1]
\startformula
A = B
\stopformula
By \ineq[eq:1] ... % By equation (1) ... となる
By \ineq{A}{B}[eq:1] ... % By A(1)B ... となる
\stoptext
\inみたいに使えますね.

その他

  • contextref.pdfにはlocal/globalなラベル名の記述があるけど,なくなったんだろうか.
  • \setupreferencingの他のキーの意味するところがわからない…….

0 件のコメント:

コメントを投稿

コメントの追加にはサードパーティーCookieの許可が必要です