[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
異なる出力フォーマットに対し,異なるテキストを使用するのが良いこともあり ます.例えば,印刷されたマニュアルとInfo出力に対し異なるテキストを指定す る,条件コマンド(conditional commands)を使用することができます.
条件コマンドは入れ子状にしてはいけません.
条件コマンドは,以下のカテゴリから成り立ちます.
16.1 条件コマンド | Specifying text for HTML, Info, or TeX. | |
16.2 条件の否定コマンド | Specifying text for not HTML, Info, or TeX. | |
16.3 生の書式化コマンド | Using raw TeX or HTML commands. | |
16.4 @set ,@clear ,そして@value | Designating which text to format (for all output formats); and how to set a flag to a string that you can insert. |
Texinfoには,特定の出力フォーマットにテキストを含める条件を利用可能にす
るために,それぞれの出力フォーマットに対して@if...
で囲む方法
があります.
@ifinfo
は,印刷されたマニュアルに植字されるとき,TeXで無視さ
れるテキストの部分を開始します.テキストのその部分は,Infoファイル(歴史
的な互換性のため)とプレーンテキストの出力だけに現れます.@ifinfo
コマンドは単独行に書くべきです.単独行の@end ifinfo
を含む行で,
Infoのみのテキストを終えるべきです.
@iftex
と@end iftex
コマンドは,@ifinfo
と
@end ifinfo
コマンドに類似しています.それらは,テキストが印刷さ
れたマニュアルに現れ,Infoファイルに現れないように指定します.
@ifhtml
と@end ifhtml
も同様で,テキストがHTML出力だけに現
すように指定します.そして,@ifplaintext
と@end
ifplaintext
も同様で,テキストがプレーンテキストの出力だけに現れるように
指定します.そして,@ifxml
と@end ifxml
は,XML出力に対す
るものです.
例えば,以下のようにします.
@iftex このテキストは,印刷されたマニュアルだけに現れます. @end iftex @ifinfo しかし,このテキストはInfo(またはプレーンテキスト)だけに現れます. @end ifinfo @ifhtml また,このテキストはHTMLだけに現れます. @end ifhtml @ifplaintext 但し,このテキストはプレーンテキストだけに現れます. @end ifplaintext @ifxml そしてこれはXML出力だけに現れます. @end ifxml |
上記の例は,以下の行を生成します. しかし,このテキストはInfo(またはプレーンテキスト)だけに現れます. また,このテキストはHTMLだけに現れます. @ifplaintext 但し,このテキストはプレーンテキストだけに現れます. @ifxml そしてこれはXML出力だけに現れます.
読んでいるマニュアルのバージョンに依存して,入力行の一つのみ見えることに 注意してください.
@ifnot...
コマンドで与えられたもの以外の,あらゆる出力フォー
マットに含まれるテキストを指定できます.
@ifnothtml ... @end ifnothtml @ifnotinfo ... @end ifnotinfo @ifnotplaintext ... @end ifnotplaintext @ifnottex ... @end ifnottex @ifnotxml ... @end ifnotxml |
@ifnot...
コマンドと@end
コマンドは,実際のソースファ
イルでは単独行で現します.
出力ファイルが与えられたフォーマットで作成されている場合,その領域は 無視されます.それ以外の場合は含められます.
(歴史的な互換性のため)一つの例外があります.@ifnotinfo
テキストは,
Infoだけでなく,Infoとプレーンテキストの出力の両方で削除されます.テキス
トがInfoだけに現れてプレーンテキストに現れないように指定するため,以下の
ように@ifnotplaintext
を指定してください.
@ifnotplaintext これはInfoにはありますが,プレーンテキストにはありません. |
これらのコマンドで限定された領域は,@tex
で使用したような生のフォー
マッタソースではなく,@iftex
で使用したような通常のTexinfoソース
にします(see section 16.3 生の書式化コマンド).
@iftex
と@end iftex
で線引きされた領域の内部に,生のTeX
コマンドを埋め込むことが可能です.TeXが見るファイルの一部になるだけな
ので,Infoではこれらのコマンドは無視されます.TeXで使用されている
`\'を`@'に置換する必要がある以外,通常のTeXファイルで書い
ていたようなTeXコマンドを書くことが可能です.例えば,Texinfoファイル
の@titlepage
セクションで,著作権ページを書式化するためのTeXコ
マンド@vskip
を使用することが可能です.(@titlepage
コマン
ドは,@iftex
コマンドの使用と同じように,その領域を自動的にInfoに
無視させます.)
しかし,プレーンTeXの多くの機能は,Texinfoが優先されるので動作しませ ん.
@tex
と@end tex
コマンドで領域を線引きすることで,プレーン
TeXを完全に入力し,TeXコマンドで`\'を使用することが可能です.
(@tex
コマンドでも,@iftex
コマンドのようにInfoは領域を無
視します.)唯一の例外は,@end tex
を正確に認識できるよう,
@
文字がまだコマンドを導入することです.
@tex $$ \chi^2 = \sum_{i=1}^N \left (y_i - (a + b x_i) \over \sigma_i\right)^2 $$ @end tex |
この例の出力は,印刷されたマニュアルにのみ現れます.Infoでこれを読んでい る場合,印刷されたマニュアルに現れる等式は見ることはないでしょう.
同様に,HTML出力のみに含まれる領域を線引きするため,@ifhtml
... @end ifhtml
を使用し,生のHTMLの領域に対し@html ...
@end html
を使用することができます(再びですが,例外的に@
はまだ
エスケープ文字なので,@end
コマンドを認識することが可能です.)
同様に,XML出力のみに含まれる領域を線引きするため,@ifxml ...
@end ifxml
を使用し,生のXMLの領域に対し@xml ... @end xml
を使用することが可能です(再びですが,例外的に@
はまだエスケープ文
字なので,@end
コマンドを認識することが可能です.)
@set
,@clear
,そして@value
@set
,@clear
,@ifset
,そして@ifclear
コマ
ンドを用いて,直接Texinfo書式化コマンドにTexinfoファイルの一部を書式化さ
せたり無視させたりすることが可能です.
短い説明は以下のとおりです.
@set flag [value]
@clear flag
@ifset flag
@end ifset
コマンドまでのテキ
ストを書式化します.flagがクリアされている場合,次の@end
ifset
コマンドまでのテキストは無視されます.
@ifclear flag
@end ifclear
コマンドまでのテ
キストは無視されます.flagがクリアされている場合,次の@end
ifclear
コマンドまでのテキストを書式化します.
16.4.1 @set と@value | Expand a flag variable to a string. | |
16.4.2 @ifset と@ifclear | Format a region if a flag is set. | |
16.4.3 @value の例 | An easy way to update edition information. |
@set
と@value
フラグに対する値を指定するために@set
コマンドを使用し,それは後に
@value
コマンドで展開されます.
フラグ(flag)は識別子です.一般的に,フラグ名には文字と数字のみを使 用し,`-'や`_'は使用しないことが最善です -- それらが動作する 文脈もありますが,TeXの制限のため全てが動作するわけではありません.
値は入力行の残りの文字による文字列で,あらゆるものを含めることが可能です.
@set
コマンドは以下のように書きます.
@set foo これは文字列です. |
これは,フラグfoo
の値を"これは文字列です"に設定します.
そのとき,Texinfoフォーマッタは@value{flag}
コマンドを
flagに設定された文字列に置換します.このためfoo
が上記のよう
に設定されている場合,Texinfoフォーマッタは以下のように変換します.
@value{foo} 上記を以下に変換 これは文字列です |
@value
コマンドを段落の中に書くことも可能です.しかし,
@set
コマンドは単独行に書く必要があります.
@set
コマンドを以下のように書く場合を考えます.
@set foo |
文字列を指定していないので,foo
の値は空の文字列になります.
@clear flag
で前に設定されたフラグをクリアする場合,それに
続く@value{flag}
コマンドはエラーを報告します.
例えば,以下のようにfoo
を設定した場合を考えます.
@set how-much very, very, very |
そのとき,フォーマッタは以下のように変換します.
It is a @value{how-much} wet day. 上記を以下変換 It is a very, very, very wet day. |
以下のように書いた場合を考えます.
@clear how-much |
そのとき,フォーマッタは以下のように変換します.
It is a @value{how-much} wet day. 上記を以下に変換 It is a {No value for "how-much"} wet day. |
@ifset
と@ifclear
flagが設定されているとき,Texinfo書式化コマンドは,それ以降の
@ifset flag
と@end ifset
コマンドの組の間にあるテキ
ストを書式化します.flagがクリアされているとき,Texinfo書式化コマ
ンドはテキストを書式化しません.@ifclear
は同様に処理しま
す.
条件によって書式化されるテキストは,@ifset flag
と
@end ifset
コマンドの間に,以下のように書いてください.
@ifset flag conditional-text @end ifset |
例えば,`large'と`small'モデルに対するマニュアルのような,二つの形態があ る一つのドキュメントを作成することが可能です.
潅木を傷つけずに掘り出すために, この機械を使用することが可能です. @set large @ifset large それは,十分大きく育った木も掘り出すことも可能です. @end ifset すぐに植え直すことを忘れないでください... |
例では,書式化コマンドは,large
フラグが設定されているので,
@ifset large
と@end ifset
の間のテキストを書式化します.
flagがクリアされているとき,Texinfo書式化コマンドは@ifset
flag
と@end ifset
の間のテキストを書式化しません.テ
キストは無視され,印刷された出力にもInfo出力にも現れません.
例えば前の例で,@set large
コマンドの後(で,条件テキストの前)に
@clear large
コマンドを書いてフラグをクリアする場合,Texinfo書式
化コマンドは,@ifset large
と@end ifset
コマンドの間のテキ
ストを無視します.書式化された出力では,"潅木を傷つけずに掘り出すために,
この機械を使用することが可能です.すぐに植え直すことを忘れないでください
..."という行のみ見えるでしょう.
@clear flag
コマンドでフラグがクリアされている場合,書式化
コマンドは@ifclear
と@end ifclear
コマンドの組の間のテキス
トを書式化します.しかし@set flag
でフラグが設定されている
場合,書式化コマンドは@ifclear
と@end ifclear
コマンドの間
のテキストを書式化しません.というよりはむしろ,それらのテキスト
を無視します.@ifclear
コマンドは以下のようにします.
@ifclear flag |
@value
の例
@value
コマンドを,マニュアル更新時に変更する必要がある部分の数を
最小限にするために使用することが可能です.Automakeの配布物を用いた同じ原
理の例とその完全なテキストは,See section C.2 GNUの見本のテキスト.
section `Overview' in The GNU Make Manual)からの適用例は以下のよう になります.
@set EDITION 0.35 Beta @set VERSION 3.63 Beta @set UPDATED 14 August 1992 @set UPDATE-MONTH August 1992 |
@copying
セクション(see section 3.3.1 @copying
:コピーの許可を宣言する)に対するテキストを書きます.
@copying This is Edition @value{EDITION}, last updated @value{UPDATED}, of @cite{The GNU Make Manual}, for @code{make}, version @value{VERSION}. Copyright ... Permission is granted ... @end copying |
@titlepage @title GNU Make @subtitle A Program for Directing Recompilation @subtitle Edition @value{EDITION}, ... @subtitle @value{UPDATE-MONTH} @page @insertcopying ... @end titlepage |
(印刷されたカバーでは,月と年だけでなくその日までリストアップした日付で なく,月と年をリストアップした日付でも曖昧ではないでしょう.)
@ifnottex @node Top @top Make @insertcopying ... @end ifnottex |
マニュアルを書式化後,@value
の構成物は展開されるので,出力物には
以下のようなテキストが含まれています.
This is Edition 0.35 Beta, last updated 14 August 1992, of `The GNU Make Manual', for `make', Version 3.63 Beta. |
マニュアルを更新したとき,フラグの値のみを変更してください.三つのセクショ ンを編集する必要はありません.
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |