diff --git a/ja_JP.eucJP/man/man7/build.7 b/ja_JP.eucJP/man/man7/build.7 index 8ac0a80ade..2cf7f97897 100644 --- a/ja_JP.eucJP/man/man7/build.7 +++ b/ja_JP.eucJP/man/man7/build.7 @@ -1,166 +1,174 @@ .\" Copyright (c) 2000 .\" Mike W. Meyer .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" %FreeBSD: src/share/man/man7/build.7,v 1.27 2004/08/13 12:59:46 ru Exp % +.\" %FreeBSD: src/share/man/man7/build.7,v 1.27.2.1 2005/02/26 05:32:41 trhodes Exp % .\" .\" $FreeBSD$ -.Dd August 13, 2004 +.Dd February 23, 2005 .Dt BUILD 7 .Os .Sh 名称 .Nm build .Nd システムの構築方法についての情報 .Sh 解説 .Fx システムおよびアプリケーションのソースコードは、異なる 3 つの -ディレクトリに格納されています。通常は、 +ディレクトリに格納されています。 +通常は、 .Pa /usr/src , .Pa /usr/doc , .Pa /usr/ports です。 .Pa /usr/src には .Dq "ベースシステム" -のソースが含まれています。ベースシステムとは、システムを使える +のソースが含まれています。 +ベースシステムとは、システムを使える 状態に構築し直すのに必要なものとして大雑把に定義されています。 .Pa /usr/doc -にはシステムドキュメントのソースが含まれています。ただし、マニュアル -ページは除きます。 +にはシステムドキュメントのソースが含まれています。 +ただし、マニュアルページは除きます。 .Pa /usr/ports は、サードパーティのアプリケーションを構築し、インストールするための 一貫したインタフェースを提供しているツリーです。 .Pp これら 3 つのディレクトリそれぞれに格納されているものを構築し インストールするには、 .Xr make 1 -コマンドを使用します。これら 3 つのディレクトリ、もしくは -サブディレクトリ内のどこででも +コマンドを使用します。 +これら 3 つのディレクトリ、もしくはサブディレクトリ内のどこででも .Xr make 1 コマンドを実行すれば、 そのディレクトリ配下のサブディレクトリ内すべてで同一のコマンドを 発行したのと同じ効果があります。 ターゲットを指定しなければ、make コマンドを実行した ディレクトリ内にあるものを単純に構築します。 次のリストはその他のターゲットの名称およびアクションを示した ものです: .Bl -tag -width indent-two .It Cm clean 構築プロセス中で生成されたファイルをすべて消去します。 .It Cm install このディレクトリに対する構築結果をインストールします。 .It Cm update 更新されたソースを .Pa /etc/make.conf で設定されている通りに取得します。 .El .Pp その他の .Pa /usr/src での make ターゲットは次のものがあります: .Bl -tag -width indent-two .It Cm buildworld カーネル以外のすべてのものを再構築し、 .Pa /etc ディレクトリ内のファイルを設定してリリースします。 .It Cm installworld .Cm buildworld で構築したものすべてをインストールします。 .It Cm buildkernel カーネルとカーネルモジュールを再構築します。 .It Cm installkernel カーネルとカーネルモジュールをインストールします。 .It Cm reinstallkernel カーネルとカーネルモジュールを再インストールします。 +.It Cm kernel +.Cm buildkernel +と +.Cm installkernel +を続けたものと同義です。 .El .Pp ports の構築プロセスに関する情報については、 .Xr ports 7 を参照してください。 .Sh 環境変数 .Bl -tag -width ".Va TARGET_ARCH" .It Va TARGET_ARCH ターゲットとなるマシンプロセッサアーキテクチャ。 この環境変数は .Dq Nm uname Fl p の出力と同じものです。 異なるアーキテクチャ用にクロスビルドするにはこの 環境変数を設定してください。 .It Va TARGET ターゲットとなるハードウェアプラットフォーム。 この環境変数は .Dq Nm uname Fl m の出力と同じものです。 ターゲットアーキテクチャをクロスビルドするのに必要な 変数です。 例えば、PC98 マシン用にクロスビルドを行うには .Va TARGET_ARCH Ns = Ns Li i386 と .Va TARGET Ns = Ns Li pc98 が必要です。 .It Va NO_WERROR 定義されている場合、警告が出ても構築が停止することはありません。 makefile が別のことを言ってきても停止しません。 .It Va DESTDIR 生成したバイナリをインストールするディレクトリ階層を指します。 .El .Sh 関連ファイル .Bl -tag -width ".Pa /usr/share/examples/etc/make.conf" -compact .It Pa /etc/make.conf .It Pa /usr/doc/Makefile .It Pa /usr/doc/share/mk/doc.project.mk .It Pa /usr/ports/Mk/bsd.port.mk .It Pa /usr/ports/Mk/bsd.sites.mk .It Pa /usr/share/examples/etc/make.conf .It Pa /usr/src/Makefile .It Pa /usr/src/Makefile.inc1 .El .Sh 使用例 最新のソースからシステムを更新するのに .Dq よい とされている方法に関しては、 .Pa src/UPDATING の .Sx COMMON ITEMS セクションをぜひ参照してください。 .Pp i386 のホストで Alpha アーキテクチャ用のシステムをクロスビルド するには、次のコマンドシーケンスを使用できます: .Bd -literal -offset indent cd /usr/src make TARGET_ARCH=alpha buildworld make TARGET_ARCH=alpha DESTDIR=/clients/axp installworld .Ed .Sh 関連項目 .Xr cc 1 , .Xr install 1 , .Xr make 1 , .Xr make.conf 5 , .Xr ports 7 , .Xr release 7 , +.Xr config 8 , .Xr mergemaster 8 , .Xr reboot 8 , .Xr shutdown 8 .Sh 作者 .An Mike W. Meyer Aq mwm@mired.org -です。 +。 diff --git a/ja_JP.eucJP/man/man7/clocks.7 b/ja_JP.eucJP/man/man7/clocks.7 index 8f72a28501..f0d0845e4f 100644 --- a/ja_JP.eucJP/man/man7/clocks.7 +++ b/ja_JP.eucJP/man/man7/clocks.7 @@ -1,176 +1,193 @@ .\" .\" Copyright (c) 1996 Joerg Wunsch .\" .\" All rights reserved. .\" .\" This program is free software. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. .\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT, .\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT .\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, .\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY .\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.\" %FreeBSD: src/share/man/man7/clocks.7,v 1.22 2002/11/29 11:39:19 ru Exp % +.\" %FreeBSD: src/share/man/man7/clocks.7,v 1.22.8.1 2005/02/25 17:52:46 njl Exp % .\" .\" $FreeBSD$ .\" " -.Dd April 1, 1996 +.Dd February 24, 2005 .Os .Dt CLOCKS 7 .Sh 名称 .Nm clocks .Nd いろいろなシステムタイマ .Sh 書式 .In time.h .Sh 解説 .Dv HZ (ヘルツ) は .Bx におけるアプリケーションインタフェースの一部ではありません。 .Pp 周波数の異なるいろいろな実体をもつクロックおよび仮想的 (計時用) なクロック があります。 .Bl -bullet .It -スケジューリングクロック。周波数 100 となるはずの実クロックです。 +スケジューリングクロック。 +周波数 100 となるはずの実クロックです。 アプリケーションからは参照できません。 .It -統計クロック。周波数 128 となるはずの実クロックです。 +統計クロック。 +周波数 128 となるはずの実クロックです。 アプリケーションから直接参照することはできません。 .It .Xr clock 3 によって報告されるクロック。 -周波数が通常 128 の仮想クロックです。実際の周波数は +周波数が通常 128 の仮想クロックです。 +実際の周波数は .Dv CLOCKS_PER_SEC マクロによって与えられます。 .Dv CLOCKS_PER_SEC は浮動小数点値であるかもしれないことに注意してください。 .Xr clock 3 は .Fx での新しいプログラムには使用しないでください。 これは .Xr getrusage 2 に比較して機能的に劣っていますが、 .Tn ANSI に適合するために 提供されています。 .Xr getrusage 2 をコールし、情報と結果を受け渡すことによって実装されています。 .It .Xr times 3 によって報告されるクロック。 -周波数が通常 128 の仮想クロックです。実際の周波数は +周波数が通常 128 の仮想クロックです。 +実際の周波数は .Dv CLK_TCK -マクロ (これは反対されています。使用しないでください。) と -.Fn sysconf _SC_CLK_TCK +マクロ (非推奨です、使用しないでください) と +.Fn sysconf SC_CLK_TCK と .Xr sysctl 3 によって与えられます。 この周波数は .Dv CLOCKS_PER_SEC とは異なりうることに注意してください。 .Xr times 3 は .Fx での新しいプログラムには使用しないでください。 これは .Xr getrusage 2 と組み合わせた .Xr gettimeofday 2 に比較して機能的に劣っていますが、 .Tn POSIX に適合するために 提供されています。 .Xr gettimeofday 2 と .Xr getrusage 2 をコールし、情報と結果を受け渡すことによって実装されています。 .It -プロファイリングクロック。1024 の周波数をもつ実クロックです。 +プロファイリングクロック。 +1024 の周波数をもつ実クロックです。 これは主に .Xr moncontrol 3 と .Xr kgmon 8 と .Xr gprof 1 で使用されます。 アプリケーションはこの実際の周波数を決定するためには .Xr sysctl 3 を使うか、プロファイリングデータファイルのヘッダを読んで 調べなければなりません。 .It -mc14618a のクロック。32768 の公称周波数をもつ実クロックです。 +mc14618a のクロック。 +32768 の公称周波数をもつ実クロックです。 分周されて統計クロックおよびプロファイリングクロックに使われます。 このクロックはアプリケーションからは参照できません。 .It -マイクロ秒クロック。1000000 の周波数をもつ仮想クロックです。 +マイクロ秒クロック。 +1000000 の周波数をもつ仮想クロックです。 これは .Bx ではほとんどの時間計測に使用され、アプリケーションに対して .Xr getrusage 2 や .Xr gettimeofday 2 や .Xr select 2 や .Xr getitimer 2 -などでエクスポートされています。これが通常 +などでエクスポートされています。 +これが通常 .Bx のアプリケーションで 使用されるべきクロックです。 .It -i8254 クロック。1193182 の公称周波数をもつ実クロック/タイマです。 +i8254 クロック。 +1193182 の公称周波数をもつ実クロック/タイマです。 3 個の独立したタイムカウンタを使用可能です。 分周されてスケジューリングクロックに使われます。 アプリケーションからは参照できません。 .It 第 5 世代以降の x86 システムでの、TSC クロック (64 ビットレジスタ)。 CPU の 1 秒あたりのサイクル数に等しい周波数の、実クロックです。 周波数は、使用可能ならば sysctl -.Sy machdep.tsc_freq +.Va machdep.tsc_freq を使用して得られます。 これはスケジューリングクロックの値の間に挿入するために使用されます。 .Xr perfmon 4 の .Dv PMIOTSTAMP 要求でアクセス可能です。 +.It +ACPI クロック。 +3579545 の公称周波数をもつ実クロック/タイマです。 +24 または 32 ビットレジスタを介してアクセスされます。 +TSC クロックとは異なり、 +たとえ CPU がスリープしたり CPU のクロック速度が変わったりしても、 +それに関わらず一定のチック速度を維持します。 +アプリケーションからは参照できません。 .El .Pp まとめ: もし .Dv HZ (ヘルツ) が 1000000 でなければ、アプリケーションはおそらく間違った クロックを使用することになるでしょう。 .Sh 関連項目 .Xr gprof 1 , .Xr clock_gettime 2 , .Xr getitimer 2 , .Xr getrusage 2 , .Xr gettimeofday 2 , .Xr select 2 , .Xr clock 3 , .Xr moncontrol 3 , .Xr times 3 .Sh 作者 .An -nosplit -この man ページは +このマニュアルページは .An Bruce Evans によって投稿された説明にもとづいて、 .An J\(:org Wunsch によって書かれました。 .\"ZZZ: 3.0-RELEASE compliant by N. Kumagai 99-1-21 diff --git a/ja_JP.eucJP/man/man7/development.7 b/ja_JP.eucJP/man/man7/development.7 index 97bafe95e6..185c64b14f 100644 --- a/ja_JP.eucJP/man/man7/development.7 +++ b/ja_JP.eucJP/man/man7/development.7 @@ -1,507 +1,507 @@ .\" Copyright (C) 1998 Matthew Dillon. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" %FreeBSD: src/share/man/man7/development.7,v 1.13 2004/08/07 04:40:20 imp Exp % .\" $FreeBSD$ .Dd December 21, 2002 .Dt DEVELOPMENT 7 .Os .Sh 名称 .Nm development .Nd FreeBSD コードベースでの開発入門 .Sh 解説 このマニュアルページでは一般のシステムオペレータ、 .Ux 管理者、または開発者が特別な許可無しで .Fx コードベースを入手し、維持し、修正する方法、 またあなたのネットワーク内の他のマシンにエクスポートできるマスタビルドを 維持する方法について述べます。 このマニュアルページは、システムオペレータ、プログラマ、および開発者を 対象にしています。 .Pp ここで述べられていることは、 FreeBSD カーネルだけではなくて、 完全な FreeBSD 環境をベースにしていることに注意してください。 ここで述べられている手法は 開発環境だけでなく、作成したもののインストールにも応用できます。 この作業をうまくやるには、 1 台のマシンに 12-17GB の適当なディスクスペースが 必要です。 .Sh マスタサーバの環境を構築する マスタサーバは安定した、プロダクション版の .Fx オペレーティングシステムで常に動作している必要があります。 これが -CURRENT のビルドまたは開発を妨げることはありません。 マスタサーバで不安定な環境を稼働させて環境を破壊したり、何かの間違いで 修復不能になるのは絶対にいやでしょう。 .Pp /FreeBSD という名前の巨大なパーティションを作成します。 8-12GB を推奨します。 このパーティションには、 CVS ツリー、取り出したソース、またあるいは オブジェクトファイルさえ含めた、ほぼ完全な開発環境が収まります。 このパーティションを、他のよりセキュリティに敏感なパーティションとは 一緒にせずに、読み取り専用の NFS エクスポートにより、他のマシンに エクスポートするのです。 .Pp .Pa /usr/obj については選択する必要があります。 つまり .Pa /FreeBSD に .Pa /usr/obj を入れることも出来るし、 .Pa /usr/obj を単独のパーティションにすることも出来ます。 私はいくつかの理由から、別のパーティションにすることを推奨します。 第一は、このパーティションにかなり大量の書き込みがされることへの 安全処置です。 第二は、ここは一般的にバックアップをする必要がないからです。 第三は、これは組み合わせを非常に容易にし、またこのドキュメントで後に 述べる開発環境にマッチするからです。 .Pa /usr/obj パーティションは少なくとも 5GB を推奨します。 .Pp -マスタサーバにおいて、 +マスタサーバにおいて、 .Fx CVS アーカイブを自動的に取得して管理する為に、 1 日 に 1 回 cvsup を 使用します。 最初に取得するときには、数ギガバイトあるので長い時間が かかります。 しかし 1 回これをすれば、毎日の同期ではかなり小量である はずです。 .Bd -literal -offset 4n mkdir /FreeBSD/FreeBSD-CVS rm -rf /home/ncvs ln -s /FreeBSD/FreeBSD-CVS /home/ncvs .Ed .Pp cron ジョブは大抵次のようなものでしょう (時刻はランダムにしてください!)。 なお、 /usr/share/examples にある cvsup ファイルのサンプルを、 cvsup に与える適切な引数と共に、修正無しで直接利用することが出来ます。 .Bd -literal -offset 4n 33 6 * * * /usr/local/bin/cvsup -g -r 20 -L 2 -h cvsup.freebsd.org /usr/share/examples/cvsup/cvs-supfile .Ed .Pp アーカイブを最初に取得する時は、 cvsup を手動で実行します。 あなたの接続速度によっては、丸一日かかってしまうでしょう! cvsup と cvs の全ての操作は root で実行し、また適切な cvs の操作のためには、 ~/.cvsrc (/root/.cvsrc) を次に示すように設定する必要があります。 ~/.cvsrc を使って cvs のデフォルトを設定するのは、 "ファイルして忘れる" 優れた方法ですが、ここに設定した、ということは忘れないでください。 .Bd -literal -offset 4n # cvs -q diff -u update -Pd checkout -P .Ed .Pp では、最初のソース環境を作成するのに、 -STABLE ソースツリーと -CURRENT ソースツリー、また同じく ports と docs を、 cvs を使ってチェックアウト しましょう。 取り出したソースや ports を /FreeBSD に置くことで、読み取り専用の NFS で 他のマシンにエクスポートできます。 これはまた、一箇所でファイルを編集、維持していれば良いという意味です。 そして全てのクライアントが自動的にその変更を拾い出すことが出来る、 という意味でもあります。 .Bd -literal -offset 4n mkdir /FreeBSD/FreeBSD-4.x mkdir /FreeBSD/FreeBSD-current cd /FreeBSD/FreeBSD-4.x cvs -d /home/ncvs checkout -rRELENG_4 src cd /FreeBSD/FreeBSD-current cvs -d /home/ncvs checkout src cvs -d /home/ncvs checkout ports cvs -d /home/ncvs checkout doc .Ed .Pp ここで、 /usr/src と /usr/src2 へシンボリックリンクを張ります。 メインサーバにおいては、私はいつも /usr/src が -STABLE を、また /usr/src2 が -CURRENT を指しています。 クライアントマシンにおいては、私は大抵 /usr/src2 を持たずに、 クライアントボックスが動かそうとしている FreeBSD バージョンを /usr/src が指しているようにしています。 .Bd -literal -offset 4n cd /usr rm -rf src src2 ln -s /FreeBSD/FreeBSD-4.x/src src (クライアント側を -CURRENT にするのも可) ln -s /FreeBSD/FreeBSD-current/src src2 (マスタサーバのみ) .Ed .Pp ところで、/usr/obj に対して選択する必要があります。 まぁ、たぶんあなたはこれを既に行い、相応のパーティション手段を選んでいる ことでしょう。 もし /FreeBSD に入れるというよくない選択をする考えならば、あなたがするのは 次のようなことです。 .Bd -literal -offset 4n (よくない選択として /FreeBSD に /usr/obj を入れる時だけです!) mkdir /FreeBSD/obj cd /usr rm -rf obj ln -s /FreeBSD/obj obj .Ed .Pp 代わりに、単純に /usr/obj を /usr に置くという選択も出来ます。 もし /usr が十分に大きい場合は動作しますが、安全上の理由から お勧めは出来ません (/usr/obj は絶えず改変されますが、 /usr は そういうものではありません)。 .Pp なお /usr/obj を読み取り専用の NFS で他のボックスにエクスポートすることで、 ビルドをメインサーバで行い、インストールを他のボックスから行うことができます。 いくつかの、あるいは全てのクライアントでビルドを行いたいなら、 単純にクライアント側で、/usr/obj をローカルディレクトリとして持てば良いです。 /usr/obj を読み書き可でエクスポートするべきではありません。 これはあらゆる種類の問題をもたらして、そして全面的に噴出してしまいます。 またセキュリティの問題も引き起こします。 マスタサーバでビルドを行い、クライアントではインストールだけを行うほうが、 ずっと容易です。 .Pp 私は大抵、 ports ツリーを CVS を介して維持しています。 これはマスタ CVS アーカイブの適切な場所に位置しており、 実際あなたにチェックアウトするように言いました (前述を参照)。 いくつかの技巧的なシンボリックリンクにより、あなたのマスタサーバと そのほかのマシンにおいて、 ports ツリーを利用することが出来ます。 なお ports ツリーには cvs の HEAD ブランチしか存在しないので、 -STABLE ボックスでも -CURRENT のものになります。 あなたが行うのは次のことです。 .Bd -literal -offset 4n (マスタサーバ及び全てのクライアントにおけるコマンド) cd /usr rm -rf ports ln -s /FreeBSD/FreeBSD-current/ports ports cd /usr/ports (シンボリックリンクの先に入ります) rm -rf distfiles (マスタサーバのみ) ln -s /usr/ports.distfiles distfiles (マスタサーバのみ) mkdir /usr/ports.distfiles mkdir /usr/ports.workdir .Ed .Pp 全てのクライアントにおいて /usr/ports はシンボリックリンクで、その先は 読み取り専用なので、 ports システムにはビルドのために別の作業ディレクトリを 指示する必要があります。 マスタサーバと全てのクライアントにおいて、 /etc/make.conf に次の行を 追加したいところでしょう。 .Bd -literal -offset 4n WRKDIRPREFIX=/usr/ports.workdir .Ed .Pp distfiles が収まるディレクトリはもちろん、 ports の作業ディレクトリも、 全てのマシンで一貫するように作成するべきです。 もし /usr/ports.distfiles と /usr/ports.workdir に十分な容量が無い場合、 大抵私は distfiles と作業スペースに十分な容量のある場所を指した シンボリックリンク (/usr にあってここはマシン毎なので) にします。 -.Sh マスタサーバから NFS でエクスポートする +.Sh マスタサーバから NFS でエクスポートする マスタサーバは /FreeBSD と /usr/obj を、これらを得ることが出来る 残りの全てのマシンのために、 NFS でエクスポートする必要があります。 セキュリティと安全性の両面から、読み取り専用のエクスポートを使用することを 強く勧めます。 このマニュアルページで述べている環境は、 読み取り専用の NFS エクスポートを第一としてデザインされています。 マスタサーバの exports ファイルは、次の行を含んでいる必要があります。 .Bd -literal -offset 4n /FreeBSD -ro -alldirs -maproot=root: -network YOURLAN -mask YOURLANMASK /usr/obj -ro -alldirs -maproot=root: -network YOURLAN -mask YOURLANMASK .Ed .Pp もちろん、 このマシンの NFS サーバの動作もまた設定する必要があります。 典型的には /etc/rc.conf によって行われます。 .Bd -literal -offset 4n nfs_server_enable="YES" nfs_server_flags="-u -t -n 4" .Ed .Sh クライアントの環境 全てのクライアントマシンは、マスタサーバから /FreeBSD と /usr/obj を 単純に NFS マウントすることで、開発/ビルド環境を直接インポートできます。 クライアントマシン側の、典型的な /etc/fstab エントリは次のようなものでしょう。 .Bd -literal -offset 4n masterserver:/FreeBSD /FreeBSD nfs ro,bg 0 0 masterserver:/usr/obj /usr/obj nfs ro,bg 0 0 .Ed .Pp そしてもちろん、クライアントにおける NFS クライアントの動作を /etc/rc.conf で設定する必要があります。 典型的には、クライアント側の NFS 性能を上げるために、 nfsiod を起動します。 .Bd -literal -offset 4n nfs_client_enable="YES" .Ed .Pp 各クライアントは、 /usr/ports と /usr/src が NFS マウントした環境を 指すように、シンボリックリンクを作成する必要があります。 あるクライアントで -CURRENT を動かしている場合、 /usr/src は /FreeBSD/FreeBSD-current/src へのシンボリックリンクであるべきです。 もし -STABLE を動かしている場合、 /usr/src は /FreeBSD/FreeBSD-4.x/src へのシンボリックリンクであるべきです。 私はクライアント側で、 /usr/src2 シンボリックリンクを作ることは 大抵ありません。これはマスタサーバ上のソースコードにおいて作業をする ときのみ、便利なショートカットとして使うものです。クライアント側では (人間の多様性からくる) 多大な混乱を招きます。 .Bd -literal -offset 4n (各クライアントにおいて) cd /usr rm -rf ports src ln -s /FreeBSD/FreeBSD-current/ports ports ln -s /FreeBSD/FreeBSD-XXX/src src .Ed .Pp 前にも述べましたが、 ports をビルドできるように、作業ディレクトリを 作成するのを忘れないでください。 適当な場所が無い場合、適切な場所へのシンボリックリンクを張りましょう。 忘れないで欲しいのは、 /usr/ports/distfiles はマスタサーバから エクスポートされているので、各マシンは同じ場所 (典型的には /usr/ports.distfiles) を指すようにするべきです。 .Bd -literal -offset 4n mkdir /usr/ports.distfiles mkdir /usr/ports.workdir .Ed .Sh カーネルをビルドする では、 -STABLE カーネルを (あなたのメイン開発ボックスで) ビルドする 方法です。 もしカスタムカーネルを作成したいのなら、構成とビルドの前に、 GENERIC を YOURKERNEL にコピーしてから編集してください。 カーネル設定ファイルは /usr/src/sys/i386/conf/KERNELNAME に存在します。 .Bd -literal -offset 4n cd /usr/src make buildkernel KERNCONF=KERNELNAME .Ed .Pp .Sy 警告! もしあなたが、旧来の config/cd/make 手法による -STABLE カーネルのビルドに 馴染んでいるのなら、 config 手法はビルド環境を /usr/obj の代わりに、 /usr/src/sys/compile/KERNELNAME に置きます。 .Pp -CURRENT カーネルをビルドします。 .Bd -literal -offset 4n cd /usr/src2 (マスタサーバにおいて) make buildkernel KERNCONF=KERNELNAME .Ed .Sh カーネルをインストールする -STABLE カーネルをインストールします (典型的にはクライアントで行います。 メイン開発サーバに新しいカーネルをインストールしたい場合のみ、 メイン開発サーバでも行います)。 .Bd -literal -offset 4n cd /usr/src make installkernel KERNCONF=KERNELNAME .Ed .Pp もし安定性のために、旧来の config/cd/make ビルド機構を用いる場合、 以下のようにインストールします。 .Bd -literal -offset 4n cd /usr/src/sys/compile/KERNELNAME make install .Ed .Pp -CURRENT カーネルをインストールします (典型的にはクライアントのみで行います)。 .Bd -literal -offset 4n (/usr/src の指す先はクライアント固有の環境であることを忘れずに) cd /usr/src make installkernel KERNCONF=KERNELNAME .Ed .Pp .Sh 世界をビルドする この環境は、全てのビルドをマスタサーバで行い、インストールを各クライアントで 行うようにデザインされています。 クライアントで /usr/obj がローカルにある場合だけ、クライアントでビルドを 行うことが出来ます。 世界をビルドするのは簡単です。 .Bd -literal -offset 4n cd /usr/src make buildworld .Ed .Pp もしあなたがマスタサーバを -STABLE 環境で動かしていたとしても、 それが -CURRENT 世界をビルドするのを妨げるわけではありません。 適切なソースディレクトリに cd してからすればよいだけです。 しかしマスタサーバにふとしたことからインストールしたりしないでください! .Bd -literal -offset 4n cd /usr/src2 make buildworld .Ed .Sh 世界をインストールする メイン開発サーバでビルドしてクライアントにインストールすることが出来ます。 メイン開発サーバは読み取り専用 NFS を介して、 /FreeBSD と /usr/obj を クライアントにエクスポートする必要があります。 .Pp .Em 注意!!! もし /usr/obj がマスタサーバ上でシンボリックリンクである場合、 各クライアントでも、やはり厳密に同じである必要があります。 マスタサーバにおいて /usr/obj が /usr にあるディレクトリ、もしくは マウントポイントである場合、各クライアントでも (同じように) /usr にある ディレクトリ、もしくはマウントポイントである必要があります。 これはビルドの時とインストールの時で、絶対パスが同じであると期待している からです。そして大体において、メイン開発ボックスでビルドしてクライアントで インストールするものです。 もし /usr/obj を正しく設定していなければ、マシン上でビルドは出来ないし、 クライアントにインストールも出来ないでしょう。 .Bd -literal -offset 4n (クライアントにおいて) (/usr/src の指す先はクライアント固有の環境であることを忘れずに) cd /usr/src make installworld .Ed .Pp .Sy 警告! マスタサーバでのビルドは出来るがクライアントにインストールできない場合、 例えばインストールをしようとすると、クライアントが読み取り専用の /usr/obj に インストールで書き込もうとして文句を言っているような場合では、 それはおそらくクライアントの /etc/make.conf がマスタサーバのそれと 十分厳密に一致しておらず、インストールにおいて、ビルドされていない何かを インストールしようとしているのでしょう。 .Sh クライアントで開発をする (インストールするだけではなく) 開発者はしばしば、単にボックスのライフテストのために、クライアントボックスで buildkernel あるいは buildworld を実行したい時があります。 これは、マスタサーバでの buildkernel や buildworld と同じ方法で行います。 あなたがするべきことの全ては、 /usr/obj がローカルストレージを指すように することです。 あなたが私のアドバイスに従って、マスタサーバにおいて /usr/obj を 独自のパーティションにしていれば、クライアント側では一般的に これを NFS マウントしているはずです。 単純に /usr/obj をアンマウントすれば、/usr/obj は、クライアントでは一般に ローカルな、 /usr にあるサブディレクトリとなります。 存分にビルドしてください! .Sh ローカルブランチを管理する 私は 2 つのバージョンのソースツリー、 /FreeBSD/FreeBSD-4.x にある stable 版、及び /FreeBSD/FreeBSD-current にある current 版を管理する 方法を述べてきました。 他のバージョンのソースツリーを、 /FreeBSD/XXX に取り出すことを妨げるものは 何もありません。 実際、私の /FreeBSD パーティションには、 .Ox や -.Nx +.Nx やいろいろな種類の Linux が含まれています。 あなたのマスタサーバ上で FreeBSD 以外のオペレーティングシステムを ビルドできるとは限らないでしょうが、中央サーバでソース配布物の 修正と管理ができるのはとても有用であり、またこれら他の オペレーティングシステムをビルドできるマシンにエクスポートすることも できます。 .Pp 多数の開発者が、カスタム配布物のビルドやパッチのテストのために、 .Fx のローカルブランチを管理しています。 これは CVS や他のソースコード管理システム (SubVersion, Perforce, BitKeeper) のリポジトリによってなされます。 .Fx のメインツリーは CVS をベースにしており、これは使いやすいです。 .Pp まず、あなたがリポジトリにコミットした後の、ローカルな変更が 修正されるのを避けるために、 cvsup 環境を修正する必要があります。 あなたの supfile から "delete" キーワードを削除し、また refuse ファイルに CVSROOT ディレクトリを追加することが重要です。 詳細な情報は、 .Xr cvsup 1 を参照してください。 .Pp .Fx 版の CVS は、独自の環境変数を調べます。 CVS_LOCAL_BRANCH_NUM には cvs tag/rtag を実行する際の整数値を指定します。 この数値を適当に大きなもの (例えば 1000) にすることで、 メインリポジトリで潜在する将来のブランチと衝突するのを避けられます。 例えば、バージョン 1.4 のファイルからのブランチは 1.4.1000 となります。 このブランチにおける将来のコミットは、リビジョン 1.4.1000.1 や 1.4.1000.2 などとなります。 .Pp ローカルブランチを分岐するには、こうします。 .Bd -literal -offset 4n cvs rtag -r RELENG_4 -b LOCAL_RELENG_4 src .Ed .Pp このようにした後、新しいタグを使ってローカルリポジトリからチェックアウトし、 そのコピーに対して変更を入れてコミットすることを始めることが出来ます。 cvs を使う際のより詳しい情報は、 .Xr cvs 1 を参照してください。 .Pp .Sy 警告! cvsup ユーティリティはいくつかの状況下において、ローカルブランチへの 変更を帳消しにしてしまうことがあります。 これはマスタ CVS リポジトリが直接操作されたり、または RCS ファイルが 変更された時に起こると報告されています。 この点において、 クライアントとサーバで全く異なる RCS ファイルを 持っている場合に、 cvsup は報告をし、差分を送ろうとするかわりに、 全体を置き換えます。 理想を言えばこのような状況は起こるべきでないのですが、現実世界では 常に起こるものです。 .Pp これが、この問題が突然起こり得る唯一のシナリオですが、これだけでは 説明できない、 CVS_LOCAL_BRANCH_NUM が引き起こす信じがたい報告も いくつかされています。 結論としては、ローカルブランチを評価したら、 update の前に毎回バックアップを 取るべきだということです。 .Sh CVS を介して更新する cvsup を使ってソースツリーを直接管理するかわりに、 CVS リポジトリの 更新されたコピーを管理する利点は、あなたのソースツリー (またはソースツリーの 一部) を、好きな時に最新版にできることです。 cron ジョブを使って CVS リポジトリの更新を管理する時、ソースツリーの更新は、 ネットワークを要すること無しに、次のようにして更新することが出来ます。 .Bd -literal -offset 4n (メイン開発サーバにおいて) cd /usr/src cvs -d /home/ncvs update cd /usr/src2 cvs -d /home/ncvs update cd /usr/ports cvs -d /home/ncvs update .Ed .Pp これは簡単であり、全体をクライアントに対してエクスポートしているので、 クライアントは更新されたソースにすぐに注目が出来ます。 cvs 操作の大半は root で実行すること、また .Fx リポジトリを正しく操作するには、 CVS に対する適切なオプションが必要なことを、 そろそろ思い出しても良い頃でしょう。 例えば .Fl Pd が、 "cvs update" を実行する際には必要です。 CVS コマンドを実行するたびに再明示する必要を無くすために、これらの オプションは一般的に ~/.cvsrc に置かれます (既に述べましたが)。 CVS リポジトリの管理はまた、複数のバージョンのソースツリーを取り出すという ことに関して、より大きな柔軟性を与えます。 まさにこのような理由から、 /FreeBSD パーティションに大きな領域 (8-12GB を推奨します) を割り当てるのは良い考えなのです。 可能ならば、 15GB を私なら割り当てます。 .Pp 私は通常、 cvs update を cron ジョブでは実行しません。 私がコードを開発しているような時には通常、ソースを変更して欲しくない というのが理由です。 そのかわり、私は時々…それが良い時だと思ったときに、手動で時々ソースを 更新します。 私が推薦するのは、 cron で cvs リポジトリだけを同期することです。 .Sh 関連項目 .Xr crontab 1 , .Xr crontab 5 , .Xr build 7 , .Xr firewall 7 , .Xr release 7 , .Xr tuning 7 , .Xr diskless 8 .Sh 歴史 .Nm マニュアルページは最初、 .An Matthew Dillon Aq dillon@FreeBSD.org によって書かれ、 2002 年 12 月に .Fx 5.0 ではじめて登場しました。 diff --git a/ja_JP.eucJP/man/man7/firewall.7 b/ja_JP.eucJP/man/man7/firewall.7 index c38ac0e32d..a44d82e072 100644 --- a/ja_JP.eucJP/man/man7/firewall.7 +++ b/ja_JP.eucJP/man/man7/firewall.7 @@ -1,393 +1,393 @@ .\" Copyright (C) 2001 Matthew Dillon. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" %FreeBSD: src/share/man/man7/firewall.7,v 1.21 2004/08/07 04:40:20 imp Exp % .\" .\" $FreeBSD$ .Dd May 26, 2001 .Dt FIREWALL 7 .Os .Sh 名称 .Nm firewall .Nd FreeBSD で動作する簡単なファイアウォール .Sh ファイアウォールの基礎 ファイアウォールは一般に、外部から行われるネットワーク内部への不正なアクセス を防ぐために使われます。また、LAN 内だけでサービスされるべき NFS や SMBFS のようなサービスに対して、内部の IP アドレスを偽装して外部から行わ れる攻撃を防ぐためにも用いられます。 .Pp また、 .Fx のファイアウォール機構は、 .Xr dummynet 4 を用いた帯域制限を行うこともできます。この機能は特に重要な目的のために 帯域幅を保証したい場合などに有効でしょう。たとえば、オフィスの T1 (1.5MBits/s) を用いてビデオ会議を行う場合に、他の通信を 1MBits/s までに押えて、 ビデオ会議用のコネクションに最低でも 0.5MBits/s を確保することができます。 また同様に、共用機器で有名なウェブサイトや FTP サイトを運用している場合には、 プロバイダからの高額な帯域課金を避けるために使うこともできます。 .Pp それから、 .Fx のファイアウォール機構はパケットが正しい到達先に行くようにパケットを divert したり、次のホップのアドレスを変更したりすることもできます。 パケットの divert は主に、プライベート IP アドレス空間から外部へのブラウズなど のアクセスを可能にする NAT (ネットワークアドレス変換) を実現するために 用いられます。 .Pp ファイアウォールを構築することは簡単なようですが、多くの人が間違いを犯し ています。最も多い間違いは、包括的なファイアウォールでなく、 排他的なファイアウォールを作ってしまうことです。排他的なファイアウォールは、 ルールセットに適合しなかったすべてのパケットを通過させるもので、 包括的なファイアウォールはルールセットにマッチしたパケットだけを通過させます。 包括的なファイアウォールのほうが、排他的なものよりもはるかに安全ですが、 正しく動くものを 作るのが難しくなります。次に多い間違いは、通過させたくないものすべてを 廃棄してしまうことです。TCP/IP が正常に動作するためには、 たとえば MTU ディスカバリの実装のように、 いくつかの ICMP エラーを必要とします。 同様に、多くのデーモンは、コネクションを要求するユーザを認証するために、 .Sy auth サービスに逆向きのコネクションを張ります。auth は危険ですが、正しい対応 はただパケットを廃棄するのでなく、TCP reset を返すようにすることです。 以下で示す、ファイアウォールのサンプルではこれらの事項を満たすように してあります。 .Sh IPFW を使うためのカーネルの設定 IP ファイアウォールの機能を使用するためには、 カスタムカーネルを作成する必要はありません。 .Em /etc/rc.conf (後述) でファイアウォールを有効にすれば、 ipfw カーネルモジュールが必要な時に自動的にロードされます。 あなたが偏執したいならば、 .Sy IPFIREWALL オプションを設定することで、IPFW を直接 .Fx カーネルに組み込むこともできます。 このファイアウォールは、何も設定しないとすべてのパケットを通過させないように なっています。 .Em /etc/rc.conf で、再起動時に適切なルールセットを読み込むようになっていないと、 コンソールに触ることができない場合、マシンにアクセスすらできなくなります。 また、新しいリリースのカーネルに更新する時に、 バイナリ (訳注: コマンドやライブラリのこと) を更新する前に リブートを実行してしまうことがよくあります。 この結果 .Xr ipfw 8 とカーネルが非互換になってしまい、ブートシーケンスで .Xr ipfw 8 が動作しないことにより、マシンにアクセスできなくなってしまいます。 このために、 .Sy IPFIREWALL_DEFAULT_TO_ACCEPT というカーネルオプションが用意されており、これによってファイアウォールの 初期状態をすべてのパケットを通過させる設定にすることができます。 しかし、 このオプションを設定することは、システムブート中の短期間、 ファイアウォールが全パケットを通すかもしれないことに注意してください。 それでも本オプションの使用は、 .Fx ファイアウォールに十分慣れるまでの期間には有用です。 どのように動作するかすべて分かったら、これを削除して、抜け穴を塞いてください。 第 3 のオプションとして、 .Sy IPDIVERT があります。これは、ファイアウォールがパケットをユーザプログラムに divert することができるようにするもので、 .Xr natd 8 によって、プライベートネットワークから外部へアクセスできるようにするとき に必要です。 トラフィックタイプによる帯域制限には、 .Em ipfw pipe ルールを有効にするために、 .Sy DUMMYNET オプションが必要です。 .Sh IPFW によるファイアウォールの例 ここに示すのは、3 つのインタフェースカードをもつマシンで動作している ipfw ベースのファイアウォールの例です。 fxp0 が「外側の」LAN に接続されています。 この LAN 上のマシンは、10. で始まる内部 IP アドレスと、 インターネットにルーティングされる IP アドレスを持ち、 デュアルホームとなっています。 たとえば、 192.100.5.x がインターネットにルーティングされる IP ブロックを指し、 10.x.x.x が内部ネットワークを指します。 例として適切ではないかもしれませんが、 10.0.1.x が fxp0 の接続されている LAN のアドレス、 10.0.2.x が fxp1 の接続されている LAN のアドレス、 そして 10.0.3.x が fxp2 のものであるとします。 .Pp この例では、3 つの LAN すべてをインターネットから隔離し、またそれぞれを も隔離したいものとします。同時に、すべての内部アドレスから、この マシンで走っている NAT ゲートウェイを経由してインターネットへアクセスが 可能であるようにします。NAT ゲートウェイを動作させるためには、fxp0 に 内部アドレスの 10. のほかに、インターネットから見えるアドレスを持たせる 必要があります。このアドレス (ここでは示していません) が、このマシンの 公式なアドレスであり、もうひとつの外部から見えるアドレス (この例では 192.100.5.5 です) が NAT ゲートウェイとしてのアドレスとなります。 この例は、外部から見える LAN のマシンにも内部アドレス 10.0.0.x を割り当てること によって、すこし複雑になっています。しかしこの方法によって、 内部サービスは内部アドレスにのみバインドし、インターネットから守れます。 外から見える IP アドレスにバインドする サービスは、インターネットに対して公開しようとするものだけにするのです。 .Pp この例では、ネットワーク 10.0.0.x はファイアウォールによって保護されてい ません。このネットワークを外部からのアドレス偽装から守るために、 インターネットルータによる保護を確認して下さい。 また例では、外部から見えるホストが 内部 IP アドレスを通じてサービスを操作する場合、 内部のネットワークに非常に自由にアクセス可能としています。 この方法にはいくらかのセキュリティ上の危険が伴っており、 外部から見えるホストに問題がある場合には何が起きるかわかりません。 この危険を回避するためには、ルール 01010 と 01011 を削除して、 LAN0 経由で入ってくるものすべてを firewall を経由するようにするべきです。 .Pp また、この例では内部アドレス空間を使うことがファイアウォールによる保護機構 の重要な点であることに着目してください。適切なアドレス偽装対策を行うこ とにより、外部から、内部 (LAN1 および LAN2) のホストに直接アクセスするこ とは不可能となります。 .Bd -literal # /etc/rc.conf # firewall_enable="YES" firewall_type="/etc/ipfw.conf" # ファイアウォールを通過する一時的なポート割り当ての範囲を設定 # # 注意 : ファイアウォールを通じて行われるサービスの負荷が高い場合には、 # より広いポート割当の範囲を必要とすることになります。そのような際には # 4000-10000 や 4000-30000 がより良い選択でしょう。 ip_portrange_first=4000 ip_portrange_last=5000 \&... .Ed .Pp .Bd -literal # /etc/ipfw.conf # # FIREWALL: ファイアウォール兼 NAT ゲートウェイ # LAN0 10.0.0.X と 192.100.5.X (デュアルホーム) # LAN1 10.0.1.X # LAN2 10.0.2.X # sw: イーサネットスイッチ (管理対象外) # # 192.100.5.x は、インターネットから見える IP アドレス (インターネットから # ルーティングされる) を意味します。10.x.x.x は、内部 IP アドレス # (外からは見えない) を表します。 # # [LAN1] # ^ # | # FIREWALL -->[LAN2] # | # [LAN0] # | # +--> 外側のホスト A # +--> 外側のホスト B # +--> 外側のホスト C # | # インターネットルータ (2 番目のファイアウォール) # | # [インターネット] # # 注意! ここには書かれていませんが、インターネットルータは発信元アドレスが # 10. であるパケットを許可しないように設定される必要があります。 # これは、デュアルホームの 10.0.0.x ブロックを保護するためです。 # そうでなければ、外部から見えるホストは、この例では守られていません。 # これらのホストは、外部に見せるサービスのみを外部から見えるアドレスに # バインドすべきです。内部サービスは、安全に内部アドレスにバインド可能です。 # # NAT ゲートウェイは、内部の IP アドレスから外部の IP アドレスへ # 向けて送られるパケットを、ポート 8668 で listen している natd に転送す # ることによって動作します。この動作はルール 00300 によって指定されています。 # 外界から natd に返ってくるパケットも同様に、ルール 00301 によって natd に # 送られます。この例で興味深いのは、外に見せているホストへの内部からの # リクエストは、natd (ルール 00290) を通す必要がないということです。 # これは、外部に見せているホストも内部の 10. ネットワークのことがわかるので # 可能であり、natd の負荷を軽減することができます。内部のトラフィックも # natd を通す必要がありません。これらのホストは、内部の 10. ネットワークの # ルーティングのことがわかるためです。 # /etc/rc.local からは、natd は以下のように起動されます。 # natd のカーネル組み込み型のバージョンである ipnat についても参照してく # ださい。 # # natd -s -u -a 208.161.114.67 # # add 00290 skipto 1000 ip from 10.0.0.0/8 to 192.100.5.0/24 add 00300 divert 8668 ip from 10.0.0.0/8 to not 10.0.0.0/8 add 00301 divert 8668 ip from not 10.0.0.0/8 to 192.100.5.5 # 高い帯域のアクセスがルールセット全体を通過していくのを防ぐためのショート # カットルールを設定します。すでに確立されている TCP コネクションはそのまま # 通し、また外へ出るパケットも同様にします。ファイアウォールを通す # のは入力パケットだけにします。 # # 確立された TCP コネクションをそのまま通してしまうことは小さなセキュリティ # ホールになりますが、ファイアウォールの過剰な負荷を避ける意味で必要 # になることもあります。もし心配ならばこのルールを、アドレス偽装チェック # のうしろに移動することもできます。 # add 01000 allow tcp from any to any established add 01001 allow all from any to any out via fxp0 add 01001 allow all from any to any out via fxp1 add 01001 allow all from any to any out via fxp2 # アドレス偽装防止のルールです。これは、内部ネットワークのパケットを # どれくらい信頼するかによって変わってきます。fxp1 を経由するパケットは必ず、 # 10.0.1.x からのものでなければなりません。fxp2 を経由するもの # は 10.0.2.x からです。fxp0 を経由するものが LAN1 や LAN2 ブロックから # のものであることもあり得ません。ここでは 10.0.0.x を保護することはでき # ないので、ルータを適切に設定する必要があります。 # add 01500 deny all from not 10.0.1.0/24 in via fxp1 add 01500 deny all from not 10.0.2.0/24 in via fxp2 add 01501 deny all from 10.0.1.0/24 in via fxp0 add 01501 deny all from 10.0.2.0/24 in via fxp0 # この例のルールセットでは、内部ホスト間には何の制約も設けていません。 # 外部から見える LAN 上のホストであっても、内部 IP アドレスを使用する # 限りにおいてはそうです。これはセキュリティホールになる可能性があります # (外部から見えるホストに何かがあったらどうなるでしょうか ?)。これら # 3 つの LAN の間の通信を完全に制限したいのであれば、以下のふたつのルール # を削除してください。 # # LAN1 と LAN2 を孤立させて、しかし外部から見えるホスト間の自由なアクセスを # 許したければ、ルール 01010 だけを削除して、01011 は残して下さい。 # # (コメントアウトしてありますが、より制約の少ないファイアウォールにする # 場合はこれらを有効にしてください) #add 01010 allow all from 10.0.0.0/8 to 10.0.0.0/8 #add 01011 allow all from 192.100.5.0/24 to 192.100.5.0/24 # # 特定の LAN からは特定のサービスへのアクセスを許可する場合 # # より制約の強いファイアウォールを使う場合には、特定の LAN からファイア # ウォール上で動作している特定のサービスにアクセスできるようにすることに # なります。この例では、LAN1 がファイアウォール上で動いているファイル共有 # を必要とすると仮定します。もし、ルール 01010 が有効になっているような、 # 制約の緩いファイアウォールであればこれらのルールは不要です。 # add 01012 allow tcp from 10.0.1.0/8 to 10.0.1.1 139 add 01012 allow udp from 10.0.1.0/8 to 10.0.1.1 137,138 # 内部と外部の LAN の横断を許可する一般的なサービス # # DNS 参照、ntalk, ntp といった特定の UDP サービスは通過させます。 # 内部サービスはアドレス偽装不可の内部アドレス (10. ネット) を持つことにより # 保護されているので、これらのルールは外部から見える IP アドレスにバインド # されているサービスに対してのみ意味を持ちます。また、UDP フラグメントは # 許可する必要があります。そうしないと、フラグメントされるような大きな # UDP パケットはファイアウォールを通過できません。 # # DNS 参照に対する応答など、大きなポート番号を用いた一時的なサービスを # 行う必要があるかもしれません。この例ではそのようなポート番号を # 4000-65535 としています。外部から見える全マシンが一時ポートをこの # 外部から見えるポートにバインドするように、/etc/rc.conf の変数で設定 # しています (上の、rc.conf の例を参照してください)。 # add 02000 allow udp from any to any 4000-65535,domain,ntalk,ntp add 02500 allow udp from any to any frag # 同様のサービスを TCP についても許可します。ここでも、外部から見える # アドレスにバインドするサービスにのみ適用されます。また、この例では # 'auth' を通過させていますが、実際には外部から見えるポートでは identd # を動作させていません。これによって、auth 要求を受け取ったマシンは # TCP RESET を発行します。パケットを捨ててしまうと、ident 参照を行ってくる # サービスへの接続の遅延の原因となります。 # # TCP フラグメントを許可していないことに注意して下さい。UDP 以外では、 # 一般にフラグメントを許さないのです。TCP の、MTU ディスカバリプロトコル # が正しく動作して、TCP フラグメントが存在しないものと期待しています。 # add 03000 allow tcp from any to any http,https add 03000 allow tcp from any to any 4000-65535,ssh,smtp,domain,ntalk add 03000 allow tcp from any to any auth,pop3,ftp,ftp-data # いくつかのタイプの ICMP を通過させることは重要です。 # 一般形な ICMP タイプをここに列挙します。 # ICMP タイプ 3 を通過させることが重要であることに注意してください。 # # 0 エコーリプライ # 3 到達不能 # 4 始点抑制 (通常は許可されません) # 5 リダイレクト (通常は許可されません。危険です !) # 8 エコー # 11 時間超過 # 12 パラメータ問題 # 13 タイムスタンプ # 14 タイムスタンプリプライ # # 状況によってはタイプ 5 の ICMP リダイレクトパケットを許可しなければな # らない場合がありますが、そのような場合にはインターネットルータでそれが # 禁止されていることを確認して下さい。 -# + add 04000 allow icmp from any to any icmptypes 0,3,8,11,12,13,14 # ここまで通って残ったフラグメントのログをとります。役にたつかもしれ # ませんが、邪魔なだけかもしれません。最後の deny ルールは、カーネルの設定 # がどうであっても、ファイアウォールが包括的なものであることを保証する # ものです。 # add 05000 deny log ip from any to any frag add 06000 deny all from any to any .Ed .Sh 内部向け、外部向けサービスのポートバインディング マルチホームなホストで、サービスをどちらのアドレスにバインドするかという ことについて触れましたが、説明はしていません。複数の IP アドレスを持つホ ストでは、それぞれのサービスをすべての IP アドレスにバインドするのではな く、特定の IP アドレスやインタフェースにバインドすることが可能です。た とえばこの例のファイアウォールマシンには、インタフェースが 3 つあり、 その 1 つには 2 つの外部から見える IP アドレスがあるので、このマシンには 5 つの IP アドレス (10.0.0.1, 10.0.1.1, 10.0.2.1, 192.100.5.5, 192.100.5.1) があることになります。Windows の LAN セグメント (LAN1 とします) に対してファイル共有サービスを提供するのであれば、samba の 'bind interfaces' という設定項目で、LAN1 の IP アドレスにだけ samba をバインドできます。 こうすることで、他の LAN セグメントではこのファイル共有サービスを利用 できなくなります。また、LAN2 に UNIX エンジニアリングワークステーション があれば、nfsd を 10.0.2.1 にバインドするように設定することで NFS でも同様 のことができます。どのサービスをどのようにバインドするかはほとんどの場合 に指定できますし、またそれが指定できない場合には .Xr jail 8 を使うことによって、間接的にそれを行うこともできます。 .Sh 関連項目 .Xr ipnat 1 , .Xr dummynet 4 , .Xr ipnat 5 , .Xr rc.conf 5 , .Xr smb.conf 5 Pq Pa ports/net/samba , .Xr samba 7 Pq Pa ports/net/samba , .Xr config 8 , .Xr ipfw 8 , .Xr jail 8 , .Xr natd 8 , .Xr nfsd 8 .Sh 関連文書 .Xr ipf 5 , .Xr ipf 8 , .Xr ipfstat 8 .Sh 歴史 .Nm マニュアルページは最初、 .An Matthew Dillon によって書かれ、2001 年 5 月に .Fx 4.3 ではじめて登場しました。 diff --git a/ja_JP.eucJP/man/man7/groff.7 b/ja_JP.eucJP/man/man7/groff.7 index 756af4f75a..d2b3aad8b7 100644 --- a/ja_JP.eucJP/man/man7/groff.7 +++ b/ja_JP.eucJP/man/man7/groff.7 @@ -1,3577 +1,3769 @@ '\" t .ig -groff.7 +groff.man + +Last update: 13 Feb 2003 This file is part of groff, the GNU roff type-setting system. Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. written by Bernd Warken maintained by Werner Lemberg Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the -Invariant Sections being this .ig-section and AUTHOR, with no +Invariant Sections being this .ig-section and AUTHORS, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the Free Documentation License is included as a file called FDL in the main directory of the groff source package. .. .\" Japanese Version Copyright (c) 2001 UCHIDA Norihiro all rights reserved. .\" Translated Thu Feb 15 2001 by UCHIDA Norihiro .\" .\" Copyright (c) 2001 FreeBSD jpman project .\" This is for Japanese translation done by FreeBSD jpman project. .\" $FreeBSD$ -.\" +.\" .\"WORD: diversion ディバージョン[groff.7] .\"WORD: divert 転換する(出力データを別の場所に貯め込むこと)[groff.7] .\"WORD: line adjustment 行の位置揃え[groff.7] .\"WORD: roff formatting system roff 清書システム[groff.7] .\"WORD: control line 制御行[groff.7] .\"WORD: formatting element 整形要素[groff.7] .\"WORD: in-line 行埋め込み式の[groff.7] .\"WORD: scaling indicator 単位指定子[groff.7] .\"WORD: trap トラップ[groff.7] .\"WORD: no-break control character 非改行制御文字[groff.7] .\"WORD: center センタリングする(動詞)[groff.7] .\"WORD: special 特別フォント[groff.7] .\"WORD: leader リーダ(目次などで項目とページ番号の間に引く線)[groff.7] .\"WORD: intra-line skip 行間スキップ(行と行の間に入れる空き)[groff.7] .\"WORD: fill 行詰め(する)[groff.7] .\"WORD: built-in condition 組み込み条件式[groff.7] .\"WORD: baseline 基準線(文字位置の基準となる水平線)[groff.7] .\"WORD: line-tabs mode 行タブモード[groff.7] .\"WORD: first measure 最初のステップ[groff.7] . .\" -------------------------------------------------------------------- .\" Setup .\" -------------------------------------------------------------------- . .mso www.tmac . .if n \{\ . mso tty-char.tmac . ftr CR R . ftr CI I . ftr CB B .\} . .if '\*[.T]'dvi' \{\ . ftr CB CW .\} . . .\" -------------------------------------------------------------------- .\" start of macro definitions .eo . .de c .. . .de TPx . TP 10n .. .c --------------------------------------------------------------------- .c .Text anything ... .c .c All arguments are printed as text. .c .de Text . nop \)\$* .. .c --------------------------------------------------------------------- .c .ExecFF macro font1 font2 text1 text2 text1 text2 ... .c .c Concat text arguments using alternating fonts and feed into macro. .c For a trailing punctuation, terminate the call with \c. .c .de ExecFF . if (\n[.$] < 4) \ . return . ds @a\" . ds @m \$1\" . ds @f1 \$2\" . ds @f2 \$3\" . shift 3 . ds @s\" . while 1 \{\ . if (\n[.$] = 0) \ . break . ds @a \$1\" . as @s \f[\*[@f1]]\*[@a]\f[]\" . shift . if (\n[.$] = 0) \ . break . ds @a \$1\" . as @s \f[\*[@f2]]\*[@a]\f[]\" . shift . \} . \*[@m] "\*[@s]\f[R]" . ft P \" to make \c happy . rm @m . rm @s . rm @a . rm @f1 . rm @f2 .. . .c --------- command line option --------- . .de option . Text \f[CB]\$* . ft P .. . .c --------- characters --------- . .de character . ExecFF Text CB R \$* .. .de squoted_char . ds @1 \$1\" . shift . ExecFF Text R CB \[oq] \*[@1] "\[cq]\$*" . rm @1 .. .de dquoted_char . ds @1 \$1\" . shift . ExecFF Text R CB \[lq] \*[@1] "\[rq]\$*" . rm @1 .. .c --------- requests --------- . .c synopsis of a request .de REQ . if (\n[.$] = 0) \ . return . ds @1 \$1\" . shift 1 . ie (\n[.$] = 0) \{\ . TP 10n . Text \f[CB]\*[@1]\f[] . \} . el \{\ . TP 10n . Text \f[CB]\*[@1]\~\f[]\f[I]\$*\f[] . \} . rm @1 .. .c reference of a request .de request . BR \$* .. . .c --------- numerical elements --------- . .c number with a trailing unit .de scalednumber . Text \$1\^\f[CB]\$2\f[]\$3\f[R] . ft P .. . .c representation of units within the text .de scaleindicator . Text \f[CB]\$1\f[]\$2\f[R] . ft P .. . .c representation of mathematical operators within the text .de operator . squoted_char \$@ .. . . .c --------- escape sequences --------- . .c --------------------------------------------------------------------- .c .ESC name [arg] .c .c Synopsis of an escape sequence, optionally with argument .c Args : 1 or 2; `name' obligatory, `arg' optional .c name : suitable name for an escape sequence (c, (xy, [long]) .c arg : arbitrary word .c Result : prints \namearg, where `name' is in CB, `arg' in I .c .de ESC . if (\n[.$] < 1) . ab .ESC needs 1 or 2 arguments. . ExecFF IP CB I "\[rs]\$1" "\,\$2\/" .. .c --------------------------------------------------------------------- .c .ESC[] name arg .c .c Synopsis for escape sequence with a bracketed long argument .c Args : 2 obligatory .c name : suitable name for an escape sequence (c, (xy, [long]) .c arg : arbitrary text .c Result : prints \name[arg], where `name' is in CB, `arg' in I .c .de ESC[] . if !(\n[.$] = 2) \ . ab .ESC[] needs exactly 2 arguments. . ExecFF IP CB I "\[rs]\$1\[lB]" "\h'-0.2m'\$2\h'-0.15m'" \[rB] .. .c --------------------------------------------------------------------- .c .ESCq name arg .c .c Synopsis for escape sequence with a bracketed long argument .c Args : 2 obligatory .c name : suitable name for an escape sequence (c, (xy, [long]) .c arg : arbitrary text .c Result : prints \name'arg', where `name' is in CB, `arg' in I .c .de ESCq . if !(\n[.$] = 2) \ . ab .ESCq needs exactly 2 argument. . ExecFF IP CB I "\[rs]\$1\[cq]" "\h'-0.3m'\$2" \[cq] .. .c --------------------------------------------------------------------- .c .ESC? arg .c .c Synopsis for escape sequence with a bracketed long argument .c Args : 1 obligatory .c arg : arbitrary text .c Result : prints `\?arg?', where the `?' are in CB, `arg' in I .c .de ESC? . if !(\n[.$] = 1) \ . ab .ESC? needs exactly 1 arguments. . ExecFF IP CB I \[rs]? "\$1" ? .. .c --------------------------------------------------------------------- .c .esc name [punct] .c .c Reference of an escape sequence (no args), possibly punctuation .c Args : 1 obligatory .c name : suitable name for an escape sequence (c, (xy, [long]) .c punct : arbitrary .c Result : prints \name, where `name' is in B, `punct' in R .c .de esc . if (\n[.$] < 1) \ . ab .esc needs 1 or 2 arguments. . BR "\[rs]\$1" \$2 .. .c --------------------------------------------------------------------- .c .escarg name arg [punct] .c .c Reference of an escape sequence (no args) .c Args : 1 obligatory, 1 optional .c name : suitable name for an escape sequence (c, (xy, [long]) .c arg : arbitrary word .c Result : prints \namearg, where .c `name' is in B, `arg' in I .c .de escarg . if (\n[.$] < 2) \ . ab .esc needs 2 or 3 arguments. . Text \f[B]\[rs]\$1\f[]\f[I]\$2\f[]\$3 .. .c --------------------------------------------------------------------- .c .esc[] name arg [punct] .c .c Reference for escape sequence with a bracketed long argument .c Args : 2 obligatory .c name : suitable name for an escape sequence (c, (xy, [long]) .c arg : arbitrary text .c Result : prints \name[arg], where `name' is in CB, `arg' in CI .c .de esc[] . if (\n[.$] < 2) \ . ab .esc[] needs 2 or 3 arguments. . Text \f[B]\[rs]\$1\[lB]\f[]\f[I]\$2\f[]\f[B]\[rB]\f[]\$3 .. . .c --------------------------------------------------------------------- .c .escq name arg .c .c Reference for escape sequence with a bracketed long argument .c Args : 2 obligatory .c name : suitable name for an escape sequence (c, (xy, [long]) .c arg : arbitrary text .c Result : prints \name'arg', where `name' is in CB, `arg' in CI .c .de escq . if (\n[.$] < 2) \ . ab .escq needs 2 arguments. . Text \f[B]\[rs]\$1\[cq]\f[]\f[I]\$2\f[]\f[B]\[cq]\f[]\$3 .. . .c --------- strings --------- . .c synopsis for string, with \*[] .de STRING . ds @1 \$1\" . shift 1 . TP 10n . ExecFF Text R CB \[rs]*[ \*[@1]\f[]\f[R]] \$* . rm @1 .. .c synopsis for a long string .de string . if (\n[.$] = 0) \ . return . Text \f[CB]\[rs]*\[lB]\$1\[rB]\f[]\$2 .. . . .c --------- registers --------- . .c synopsis for registers, with \n[] .de REG . ds @1 \$1\" . shift 1 . TP 10n . ExecFF Text R CB \[rs]n[ \*[@1]\f[]\f[R]] \$* . rm @1 .. .c reference of a register, without decoration .de register . Text register . BR \$* .. . .ec .\" end of macro definitions . . .\" -------------------------------------------------------------------- .\" Title .\" -------------------------------------------------------------------- . -.TH GROFF 7 "6 August 2001" "Groff Version 1.17.2" +.TH GROFF 7 "1 May 2003" "Groff Version 1.19" .SH 名称 groff \- GNU roff 言語の簡易リファレンス . . .\" -------------------------------------------------------------------- .SH 解説 .\" -------------------------------------------------------------------- +. .I groff という名前は、 .I GNU roff を表しており、roff 清書システムをフリーで実装したものです。 +. groff システムの概観ならびに背景については .BR roff (7) を参照してください。 . .P このドキュメントでは、groff 内で使用される、あらかじめ定義された roff 言語要素を簡潔に説明しているだけです。 +. 古くからある機能と groff 拡張機能についての両方とも扱っています。 . .P 歴史的に、 .I roff 言語 は .IR troff と呼ばれています。 .I groff は、古くからあるシステムと互換性を持ちつつ、独自の拡張機能も 提供しています。 +. そのため GNU 版では、 .IR roff , .IR troff , .I groff 言語 という術語は同義として使うこともできるでしょう。 +. しかし、 .I troff は、どちらかと言えば古くからの機能に対して適用されるという 傾向があり、それに対して、 .I groff は GNU 拡張に重きを置いています。 そして、 .I roff は、この言語の一般的な術語になっています。 . .P このファイルは、 .I groff .BR info (1) ファイルにある完全なドキュメントの簡易版に過ぎません。 info ファイルの方がより詳細で実情に近く、正確な情報を含んでいます。 . .P groff ドキュメントを書くために使う一般的な文法は比較的 やさしいのですが、 roff 言語の拡張機能を書くのは少々骨が折れるかもしれません。 . .P roff 言語は、行指向の言語です。 +. 行には、制御行とテキスト行の 2 種類しかありません。 +. 制御行は制御文字で始まります。 制御文字は、デフォルトではピリオド .dquoted_char . あるいはシングルクォート .dquoted_char ' です。 そのほかの文字で始まる行はすべてテキスト行です。 . .P .B 制御行 は、コマンドを表し、オプションで引数を取ることもあります。 +. 制御行は、次のような文法になります。 +. 先頭の制御文字の後には、コマンド名を続けることができます。 引数は、もしあれば、コマンド名や他の引数と空白で分けられます。 例えば、次のようにします。 .RS . .P .Text .command_name arg1 arg2 .RE . .P インデント用に、先頭の制御文字とコマンド名との間にはスペースや タブ文字をいくつ入れても良いですが、制御文字は行の先頭になくては なりません。 . .P .B テキスト行 は、表示される部分のことです。 テキスト行はエスケープシーケンスで変更することができます。 エスケープシーケンスは先頭にバックスラッシュ .squoted_char \[rs] を置くことで認識されます。 これらは、行や単語の一部に含まれ、整形要素となったり 関数となったりします。 +. エスケープシーケンスには、シングルクォート .dquoted_char ' で区切られた引数を取るものもありますし、 開き括弧 .squoted_char ( -に続いて符合化され長さの一定なものや、角括弧 +に続いて符号化され長さの一定なものや、角括弧 .squoted_char [ と .squoted_char ] で括られているものもあります。 . .P roff 言語は、マクロなど、言語拡張機能を書くための柔軟な手段を 提供しています。 +. マクロ定義を解釈する際に、roff システムは .BR "コピーモード" と呼ばれる特別なモードに入ります。 . .P コピーモードの振る舞いはとても扱いにくいものでもありますが、 確実に安全に使えるようにするルールがいくつかあります。 +. .IP 1. 表示可能なバックスラッシュは .esc e と記述しなくてはなりません。 もっと正確に言えば、 .esc e は現在のエスケープ文字を表します。 +. バックスラッシュのグリフを得るには .esc (rs または .esc [rs] を使用してください。 .IP 2. バックスラッシュはすべて 2 重にしてください。 .IP 3. テキスト行はすべて、スペースをとらない特殊文字 .esc & で始めてください。 . .P このやり方は、一番効率の良いコードが生成できる というわけではありませんが、最初の一歩としては使えるはずです。 +. さらに良いやり方については groff info ファイルおよび .BR groff_tmac (5) を参照してください。 . .P roff ソースファイルを読むのはこれよりは簡単です。 すべてのマクロ定義部分で 2 重になっているバックスラッシュを 1 つに置き換えればよいだけです。 . +. .\" -------------------------------------------------------------------- .SH "groff 要素" -.\"-------------------------------------------------------------------- +.\" -------------------------------------------------------------------- +. roff 言語の要素は、テキストファイルに整形用情報を 付加するものです。 +. 基本的な要素は、あらかじめ定義されたコマンド および変数であり、 この要素のおかげで roff は本格的なプログラミング言語に なっているのです。 . .P roff コマンドには 2 種類あります。 コマンドは引数を取ることもあります。 .B リクエスト は、ドット .squoted_char . あるいは .dquoted_char ' で始まる行に書かれるものです。 これに対して .B エスケープシーケンス は、 バックスラッシュ .squoted_char \[rs] で始まる、行埋め込み式の関数や単語中の整形要素です。 . .P ユーザは独自の整形コマンドを .request de リクエストを使って定義することができます。 +. これらのコマンドは .BR マクロ と呼ばれていますが、実際にはリクエストとまったく同様に使われます。 +. マクロパッケージは groff 言語で書かれた定義済みのマクロセットです。 +. ユーザが独自にエスケープシーケンスを作成できる場合というのは 非常に限られており、特殊文字のみマップすることができます。 . .P groff 言語は、異なるインタフェースを持ついくつかの種類の変数を 提供しています。 +. 定義済みの変数もありますが、ユーザも同様に自分で変数を定義できます。 . .P .B 文字列 変数は文字列を格納します。 +. この変数は .request ds リクエストで設定され、値は .esc * エスケープシーケンスを使って取り出します。 . 文字列は、変数を持つことができます。 . .P .B レジスタ 変数は数値、スケールファクタつき数字、 場合によっては文字列に似たオブジェクトを格納できます。 +. .request nr リクエストで設定され、値は .esc n エスケープシーケンスを使って取り出します。 . .P .B 環境 を使うことによって、行の長さやフォントサイズなどのような グローバルな整形パラメータを、後で再利用できるように ユーザが一時的に格納することができます。 +. これは .request ev リクエストによって行われます。 . .P .B フォント は、名前もしくは内部番号のどちらかで判別されます。 +. 現在のフォントは .request ft リクエストもしくは .esc f エスケープシーケンスで選択されます。 +. デバイスごとに特別フォントがありますが、次のフォントはすべての デバイスで利用可能です。 .B R は標準フォント、ローマン体です。 .B B はその .B ボールド体 です。 +. .I イタリック体 フォントは .B I と呼ばれておりどこででも利用可能ですが、テキストデバイスでは ローマン体フォントに下線がついたものとして表示されます。 +. グラフィカルの出力デバイスに対しては、次のフォントの固定幅の 修飾文字が存在します。 .BR CR , .BR CI , および .BR CB です。 テキストデバイスでは、いずれにしても文字はすべて固定幅です。 . .P さらに、roff の拡張要素がいくつかあります。 +. .B ディバージョン は、後で利用できるように情報をマクロに格納します。 +. .B トラップ は、ページの先頭から何行目とか、ディバージョンや入力において 何行目というような位置条件です。 +. アクションの中には、条件が揃ったときに自動的に起動するように 指示できるものがあります。 . .P これより詳細な情報と例については、groff info ファイルに示されています。 . +. .\" -------------------------------------------------------------------- .SH "制御文字" .\" -------------------------------------------------------------------- +. ある条件下で特別な制御タスクをもつ文字が いくつかあります。 +. .TP .character . ドットは、行の先頭あるいは .request if , .request ie , -.request el , +.request el および .request while リクエスト中の条件の後にある場合のみ特別です。 その位置では、リクエスト (あるいはマクロ) を導入する制御文字になります。 +. .esc . エスケープを使うと、この特別な動作を遅らせることができます。 +. .request cc リクエストを使うことで、この制御文字を別の文字に設定して、 ドット .squoted_char . を特殊文字でなくすることができます。 .IP "" 他の位置にドットがあるときは、ただのドット文字以上の意味はありません。 +. テキスト段落の中では、文はそれぞれ新しい行で始めるほうが有利です。 +. .TP .character ' シングルクォートには 2 つの制御機能があります。 +. 行の先頭および条件リクエスト内では、 シングルクォートは非ブレーク制御文字になります。 +. これは、ドットのようにリクエストを導入しますが、 リクエストが行を折り返さないような追加のプロパティをつけるものです。 +. .request c2 リクエストを用いると、非ブレーク制御文字を別の文字に設定する ことができます。 +. .IP "" 2 つめのタスクとして、シングルクォートは、 いくつかの関数エスケープシーケンスの中で 引数の区切り文字としてよく使用されます (引数に含まれない文字のペアならどれでも良いのですが)。 +. その他の場所にあれば、シングルクォート文字 あるいはアポストロフィ文字になります。 +. groff は、表示用の表記として エスケープシーケンス .esc (cq を提供しています。 +. .TP .character \[dq] ダブルクォートはリクエスト、マクロ、文字列の中で引数を括るときに 使用されます。 +. .request ds および .request as リクエスト内では、引数の先頭にくるダブルクォートは取り除かれ、 その後に続くダブルクォート以外の文字を定義文字列とします (先頭に空白が来るのを有効にします)。 +. エスケープされたダブルクォート .esc \[dq] はコメントの開始になります。 +. それ以外は、ダブルクォートには特別な機能はありません。 +. groff は、表示用の表記として エスケープシーケンス .esc (dq を提供しています。 +. .TP .character \[rs] バックスラッシュは、通常エスケープシーケンスの開始を意味しています (この文字は、 .request ec リクエストによって変更できます)。 +. 表示用のエスケープ文字は、エスケープシーケンス .esc e で、バックスラッシュのグリフは .esc (rs で得られます。 .TP .character ( 開き括弧は、エスケープシーケンス内で、ちょうど 2 文字でできた エスケープ名あるいは引数を導入したときのみ特別な意味を持ちます。 +. groff では、この動作は \f[CB][]\f[] の組で置き換えることができます。 .TP .character [ 開き角括弧は、groff のエスケープシーケンス内でのみ特別な意味を持ちます。 これは、長いエスケープシーケンス名やエスケープシーケンスの引数を 導入するときに使用します。 +. それ以外の場合は、例えばマクロ呼び出しなどでも特別な意味はありません。 .TP .character ] 閉じ角括弧は、groff のエスケープシーケンス内でのみ特別な意味を持ちます。 これは、長いエスケープシーケンス名やエスケープシーケンスの引数を 終わらせます。 +. それ以外の場合は、特別な意味はありません。 .TP \f[CI]space\f[] 空白文字は、機能的な働きしか持たない文字です。 +. これは、 リクエスト、マクロ、文字列の引数の区切り文字、 およびテキスト行における単語の区切り文字です。 +. また、空白文字は groff の単語間の水平方向の空白計算に作用します。 +. 定義された空白幅を得たい場合は、 .squoted_char "\[rs]\ " (エスケープ文字とそれに続いた空白文字)、 .esc | , .esc ^ , あるいは .esc h のようなエスケープシーケンスを使う必要があります。 +. .IP \f[CI]newline\f[] テキストの段落においては、改行は空白文字とほぼ同じような作用をします。 +. 連結された行は、エスケープした改行で指定できます。 つまり、行の最後の文字に .squoted_char \[rs] を指定するのです。 .IP \f[CI]tab\f[] テキスト中にタブ文字があれば、インタプリタは次の定義済みのタブ位置へ 水平方向にインデントを作ります。 +. タブ位置の調整には洗練されたインタフェースが存在します。 . +. .\" -------------------------------------------------------------------- .SH "数式" .\" -------------------------------------------------------------------- +. .B 数値 は、符号つき整数、符号なし整数、浮動小数点実数のいずれか、 およびそれに単位指定子を付加したものです。 +. .B 単位指定子 は、計測単位を表す 1 文字の略語です。 +. 単位指定子が後についた数字は、サイズに関する値を意味しています。 +. デフォルトでは、数値は単位指定を持ちません。 つまり、単なる数字にすぎません。 . .P .I roff 言語では、次の単位指定子を定義しています。 . +. .P .PD 0 .RS . .TPx .B c センチメートル . .TPx .B i インチ . .TPx .B P パイカ\ \[eq]\ 1/6\ インチ . .TPx .B p ポイント\ \[eq]\ 1/72\ インチ . .TPx .B m エム(em)\ \[eq]\ \f[R]ポイント値でのフォントサイズ (文字 `\f[CR]m\f[R]' の幅) . .TPx .B M \f[CR]エム(em)\f[R] の 100 倍 . .TPx .B n エヌ(en)\ \[eq]\ em/2 . .TPx .B u 実際の出力デバイスでの基本単位 . .TPx .B v 基本単位での行送り幅 .\"X kuma 今回の修正で単位 z が抜け、かつて単位 z の説明だった部分が .\"X kuma 単位 v の説明にくっついてしまっている。バグか? .\"X kuma とりあえず原文の修正に従い、単位 z がなくなったことにしておく。 .\"X kuma . .\"X kuma .TPx .\"X kuma .B z -スケールされたポイント数\ \[eq]\ 1 ポイントの 1/\f[CI]sizescale\fR 倍 -(フォントの \fIDESC\f[] ファイルで定義) +スケールされたポイント数\ \[eq]\ 1 ポイントの 1/\f[CI]sizescale\f[R] 倍 +(フォントの \f[I]DESC\f[] ファイルで定義) . .TPx .B f 65536 倍 .RE .PD . .P .B 数式 は、先に定義された数値と、昔から troff で定義されていた 次に示す算術演算子の組合せです。 . .P .PD 0 .RS . .TPx .B + 加算 . .TPx .B \- 減算 . .TPx .B * 乗算 . .TPx .B / 除算 . .TPx .B % 剰余 . .TPx .B = 等号 . .TPx .B == 複数等号 . .TPx .B < より小さい . .TPx .B > より大きい . .TPx .B <= 以下 . .TPx .B >= 以上 . .TPx .B & 論理積 . .TPx .B : 論理和 . .TPx .B ! 論理否定 . .TPx .B ( 式のグループ化 . .TPx .B ) 現在の式グループを閉じる . .RE .PD . .P さらに、 .I groff は、数式に対して次の演算子を追加しました。 . .P .PD 0 .RS . .TPx .ExecFF Text I CB e1 >? e2 .I e1 と .I e2 の最大値 . .TPx .ExecFF Text I CB e1 「特別フォント」 . .REQ .ft 直前のフォントに戻します。 リクエスト .request \[rs]f[] または .request \[rs]fP と同じです。 . .REQ .ft font フォント名または番号 .I font に変更します。 エスケープシーケンス .esc[] f font と同じです。 . .REQ .ftr font1 font2 フォント .I font1 をフォント .I font2 に変換します。 . .REQ .hc 追加ハイフネーション指定文字を削除します。 . .REQ .hc c 追加ハイフネーション指定文字として\~\c .I c を設定します。 . .REQ .hcode c1 code1 c2 code2 .\|.\|.\& 文字 .I c1 のハイフネーションコードを .I code1 に、文字 .I c2 のコードを .I code2 のように設定します。 . .REQ .hla lang 現在のハイフネーション言語を .I lang に設定します。 . .REQ .hlm n ハイフンされた行の最大連続数を .I n に設定します。 . .REQ .hpf file ハイフネーションのパターンをファイル .I file から読み込みます。 . .REQ .hpfa file ハイフネーションのパターンを .I file から追加します。 . .REQ .hpfcode file .request .hpf のための入力マッピングを設定します。 . .REQ .hw words 例外的なハイフネーションをする単語のリストを .I words で指定します。 . .REQ .hy N ハイフネーションモードを .I N に変更します。 . .REQ .hym n ハイフネーションの余白を .I n に設定します (デフォルトの単位指定子は\~\c .scaleindicator m です)。 . .REQ .hys n ハイフネーションの空白を .I n に設定します。 . .REQ .ie cond anything 条件式 .I cond が真ならば .I anything を処理します。 偽の場合はリクエスト .request .el へ移動します。 . .REQ .if cond anything 条件式 .I cond が真ならば .I anything を処理します。偽の場合は何もしません。 . .REQ .ig リクエスト .B ..\& に遭遇するまでテキストを無視します。 . .REQ .ig end リクエスト .request .end までの間のテキストを無視します。 . .REQ .in インデント量を直前の値に戻します。 . .REQ .in \[+-]N 引数 .I \[+-]N に従ってインデント量を変更します (デフォルトの単位指定子は\~\c -.scaleindicator m です)。 +.scaleindicator m +です)。 . .REQ .it N trap 次の行から .I N 行に対し、入力行のカウントトラップを設定します。 . .REQ .itc N trap .esc c により行のカウントが中断され 1 行扱いされることを 除けば、 .request .it と同じです。 . .REQ .kern ペアワイズカーニングを有効にします。 . .REQ .kern n .I n が 0 ならばペアワイズカーニングを無効にします。 0 でなければ有効にします。 . .REQ .lc リーダ繰り返し文字の定義を削除します。 . .REQ .lc c リーダ繰り返し文字を\~\c .I c に設定します。 . .REQ .length register anything 文字列 .I anything の文字列長をレジスタ .I register に書き込みます。 . .REQ .linetabs 行タブモードを有効にします (つまり、出力行に比例したタブ位置を計算します)。 . .REQ .linetabs n .I n が 0 の場合、行タブモードを無効にします。 それ以外の場合は、行タブモードを有効にします。 . .REQ .lf N 入力の行番号を .I N に設定します。 . .REQ .lf N file 入力する行数を .I N に、ファイル名を .I file に設定します。 . .REQ .lg N 引数 .I N が 0 より大きければリガチャ (合字) モードにします。 . .REQ .ll 行幅を直前の値に戻します。 . .REQ .ll \[+-]N 行幅を引数 .I \[+-]N に従って設定します (デフォルトの大きさは .scalednumber 6.5 i で、デフォルトの単位指定子は .scaleindicator m です)。 . .REQ .ls 追加の行間スキップ量を直前の値に戻します。 . .REQ .ls N 追加の行間スキップ量を .I N に設定します。 つまり、テキストの出力行それぞれの後に .I N -1 行の空白行を挿入します。 . .REQ .lt \[+-]N タイトルの長さです (デフォルトの単位指定子は\~\c .scaleindicator m です)。 . .REQ .mc 余白文字を無効にします。 . .REQ .mc c それぞれのテキスト行の後、 右側余白から現在設定されている距離に文字 .I c を出力します。 . .REQ .mc c N 余白文字を .I c に、右側余白からの距離を .I N に設定します (デフォルトの単位指定子は\~\c .scaleindicator m です)。 . .REQ .mk register 現在の垂直位置を .I register にマークします。 . .REQ .mso file リクエスト .so と同じですが、tmac ディレクトリにある .I file が検索される点が違います。 . .REQ .na 出力行の位置揃えを行いません。 . .REQ .ne 1 行分の行送りが必要であることを指定します。 . .REQ .ne N .I N 行分の行送りが必要であることを指定します (デフォルトの単位指定子は\~\c .scaleindicator v です)。 . .REQ .nf 出力行に行詰めや位置揃えを行いません。 . .REQ .nh ハイフネーションをしません。 . .REQ .nm 行番号モードを無効にします。 . .REQ .nm \[+-]N \fR[\fPM \fR[\fPS \fR[\fPI\fR]]]\fP 行番号モードの、行番号、行番号出力間隔、空白、インデントを設定します。 . .REQ .nn 次の行に行番号をつけません。 . .REQ .nn N 次の .I N 行に行番号をつけません。 . .REQ .nop anything .I anything を常に実行します。 . .REQ .nr register \[+-]N M -レジスタの値を、インクリメント値 +.I register +の値を、インクリメント値 .I M で .I \[+-]N に設定・変更します。 . .REQ .nroff 組み込み条件式 .B n を真に、 .B t を偽にします。 . .REQ .ns 空白なしモードにします。 . .REQ .nx 現在のファイルの末尾に直ちにジャンプします。 . .REQ .nx filename 次のファイルへ処理を移します。 .\" 上記は、groff info の内容を参考にして補足しました。 .\" FreeBSD 4.4-RELEASE .\" By koich@cac.co.jp (Sept. 06, 2001) . .REQ .open stream filename ファイル .register filename を書き込みモードでオープンし、名前 .register stream を持つストリームに関連づけます。 . .REQ .opena stream filename リクエスト .request .open と同じですが、追加モードでファイルをオープンします。 . .REQ .os リクエスト .request sv で指定された行送り量を出力します。 . .REQ .output string .I string を直接中間出力に送出します。このとき、 .I string が、 .character \[dq] で始まる場合は、先頭に空白類文字 (whitespace) を置くことが できます -( +(\c .character \[dq] は削除されます)。 . .REQ .pc ページ番号文字を .squoted_char % に戻します。 . .REQ .pc c ページ番号文字を設定します。 . .REQ .pi program プログラム .I program に出力をパイプします (nroff のみ)。 . .REQ .pl ページ長をデフォルトの .scalednumber 11 i に設定します。 現在のページ長はレジスタ .register .p に格納されています。 . .REQ .pl \[+-]N ページ長を .I \[+-]N に変更します (デフォルトの単位指定子は\~\c .scaleindicator v です)。 . .REQ .pm マクロ名とサイズを出力します (サイズは 1 ブロック 128 バイトのブロック数です)。 . .REQ ".pm t" マクロ全体のサイズのみを出力します (サイズは 1 ブロック 128 バイトのブロック数です)。 . .REQ .pn \[+-]N 次のページ番号を .I N に設定します。 . .REQ .pnr 現在定義されている数値レジスタの名前と内容を標準エラー出力に 出力します。 . .REQ .po ページオフセットを直前の値に戻します。 +. 現在のページオフセットはレジスタ .register .o に格納されています。 . .REQ .po \[+-]N ページオフセットを .I N に設定します。 . .REQ .ps ポイントサイズを直前の値に戻します。 -. +\." ここには . を入れるべき .REQ .ps \[+-]N ポイントサイズを指定します。 エスケープシーケンス .esc[] s \[+-]N と同じです。 . .REQ .psbb filename PostScript 画像 .I filename のための矩形領域を確保します。 . .REQ .pso command リクエスト .request so と同様ですが、 .I command の標準出力から入力します。 . .REQ .ptr すべてのトラップの名前と位置を標準エラー出力に出力します (入力行のトラップとディバージョンのトラップは含まれません)。 . .REQ .pvs -垂直方向の後付け行送り量 (post-vertical line spacing) を変更します。 +前の垂直方向の後付け行送り量 (post-vertical line spacing) を変更します。 . .REQ .pvs \[+-]N 垂直方向の後付け行送り量 (post-vertical line spacing) を .I \[+-]N に変更します (デフォルトの単位指定子は .scaleindicator p です)。 . .REQ .rchar c1 c2 .\|.\|.\& 文字定義 .IR c1 , .IR c2 , .I .\|.\|.\& を削除します。 . .REQ .rd prompt 標準入力からの入力を読み込みます。 .\" 上記は、groff info の内容を参考にして補足しました。 .\" FreeBSD 4.4-RELEASE .\" By koich@cac.co.jp (Sept. 06, 2001) . .REQ .return マクロから戻ります。 . .REQ .rfschar f c1 c2 .\|.\|.\& フォント .I f における文字 .IR c1 , .IR c2 , .I .\|.\|.\& の定義を削除します。 . .REQ .rj n 次の .I n 行の入力行を右寄せします。 . .REQ .rm name .I name で指定されたリクエスト、マクロ、文字列を削除します。 . .REQ .rn old new .I old で指定されたリクエスト、マクロ、文字列の名前を .I new に変更します。 . .REQ .rnn reg1 reg2 レジスタ名 .I reg1 を .I reg2 に変更します。 . .REQ .rr register レジスタ .I register を削除します。 . .REQ .rs 空白を復活させます。つまり空白なしモードを無効にします。 . .REQ .rt \[+-]N -(上方向のみ、) マークしておいた垂直位置まで戻します +.I (上方向のみ) +、マークしておいた垂直位置まで戻します (デフォルトの単位指定子は\~\c .scaleindicator v です)。 . .REQ .schar c anything グローバルフォールバック文字 .I c を文字列 .I anything に定義します。 . .REQ .shc ソフトハイフン文字を .esc (hy に戻します。 . .REQ .shc c ソフトハイフン文字を .I c に設定します。 . .REQ .shift n マクロにおいて、引数を位置 .I n にシフトします。 . .REQ .sizes s1 s2 .\|.\|.\& sn \fB[0]\fP ファイル .B DESC の .B sizes コマンドと同様に、利用可能なフォントサイズを設定します。 . .REQ .so filename ソースファイルをインクルードします。 . .REQ .sp 1 行スキップします。 . .REQ .sp N .I N の行送りを挿入します。 .I N の符号によって上下方向が決まります (デフォルトの単位指定子は .scaleindicator v です)。 . .REQ .special 特別フォントのグローバルリストを空にリセットします。 . .REQ .special s1 s2 .\|.\|.\& フォント .IR s1 , .IR s2 , などを特別フォントとします。 現在のフォントにない文字をこれらから検索します。 . .REQ .spreadwarn 値を変えずに、出力行幅警告のオンオフを切り替えます。 . .REQ .spreadwarn limit 出力行の空白が .I limit 以上に広がった場合に警告を出します (デフォルトの単位指定子は .scaleindicator m です)。 . .REQ .ss N 空白文字のサイズを .IR N /12 に設定します。 単位は現在のフォントの空白幅です。 . .REQ .ss N M 空白文字のサイズを .IR N /12 に、文の空白サイズを .IR M /12 に設定します。 単位は現在のフォントの空白幅 (\f[CR]\[eq]1/3 em\f[]) です。 . .REQ .sty n style 位置 .I n のフォントをスタイル .I style に関連づけます。 . .REQ .substring xx n1 n2 名前 .I xx の文字列を、インデックス .I n1 と .I n2 とで決まる部分文字列で置換します。 . .REQ .sv 行送り量を .scalednumber 1 v に設定します。 . .REQ .sv N リクエスト .request os で出力される空白行の送り量を .I N に設定します。 . .REQ .sy command-line プログラム .I command-line を実行します。 . .REQ ".ta T" N タブ位置を .I N の倍数に設定します (デフォルトの単位指定子は\~\c .scaleindicator m です)。 -. +.\" ここには . を入れるべき .REQ .ta n1 n2 .\|.\|.\& nn \f[CB]T\f[] r1 r2 .\|.\|.\& rn 位置 .IR n1 , .IR n2 , .Text .\|.\|., .I nn にタブを設定し、さらに、 .IR nn + r1 , .IR nn + r2 , .Text .\|.\|., .IR nn + rn にタブを設定し、それ以降は、 .IR nn + rn + r1 , .IR nn + rn + r2 , .Text .\|.\|., .IR nn + rn + rn のように設定します。 . .\".REQ .tar .\"内部的に保存されたタブ位置を復元します。 .\". .\".REQ .tas .\"タブ位置を内部的に保存します。 . .REQ .tc タブ繰り返し文字を削除します。 -. +.\" ここには . を入れるべき .REQ .tc c タブ繰り返し文字を\~\c .I c に設定します。 . .REQ .ti \[+-]N 次の行を一時的にインデントします (デフォルトの単位指定子は\~\c .scaleindicator m です)。 . .REQ .tkf font s1 n1 s2 n2 フォント .I font のトラックカーニングを有効にします。 . -.REQ .tl \f[CB]'\f[]left\f[CB]'\f[]center\f[CB]'\f[]right\f[CB]'\f[] +.REQ .tl \f[CB]\[cq]\f[]left\f[CB]\[cq]\f[]center\f[CB]\[cq]\f[]right\f[CB]\[cq]\f[] 3 つの部位をもつタイトルです。 . .REQ .tm anything .I anything を端末 (UNIX の標準的なメッセージ出力先) に出力します。 .\" 「ターミナル」 => 「端末」 . .REQ .tm1 anything .I anything を端末 (UNIX の標準的なメッセージ出力先) に出力します。 その際、 .I anything が .character \[dq] で始まっている場合は、先頭を空白で始めることができます -( +(\c .character \[dq] 自体は取り除かれます)。 . .REQ .tmc anything .request .tm1 と似ていますが、末尾の改行を出力しません。 . .REQ .tr abcd.\|.\|.\& 出力で .I a を .I b に、 .I c を .I d のように変換します。 . .REQ .trf filename ファイル .I filename の内容をそのまま出力します。 . .REQ .trin abcd.\|.\|.\& リクエスト .B asciify が、文字変換前にその文字コード (が存在する場合、それ) を 使用することを除けば、リクエスト .request tr と同じです。 . .REQ .trnt abcd.\|.\|.\& リクエスト .request tr と同じですが、 .esc ! によってディバージョンへと出力されるテキストは変換されません。 . .REQ .troff 組み込み条件式 .B t を真に、 .B n を偽に設定します。 . .REQ .uf font アンダラインフォントセットを .I font に設定します (リクエスト .request .ul で切り替わります)。 . .REQ .ul N 入力行を .I N 行、アンダライン付きにします (troff では イタリック体になります)。 . .REQ .unformat diversion .I diversion 内のフォント情報を保存しつつ、空白文字およびタブ文字を アンフォーマットします。 .REQ .vpt n .I n が 0 でなければ垂直位置のトラップを有効にします。 0 ならば無効にします。 . .REQ .vs 行送りの基準線間隔を直前の値に戻します。 . .REQ .vs \[+-]N 行送りの基準線間隔を .I \[+-]N に設定します (デフォルトの単位指定子は、 .scaleindicator p です)。 デフォルト値は .scalednumber 12 p です。 . .REQ .warn n 警告コードを .I n に設定します。 . .REQ .warnscale si 警告で使用する単位指定子を .I si に設定します。 . .REQ .wh N 位置 .I N の (最初の) トラップを削除します。 . .REQ .wh N trap 位置によるトラップを設定します。 負の値の場合はページ末尾からの指定を表します。 . .REQ .while cond anything 条件式 .I cond が真ならば .I anything を入力として受理します。 . .REQ .write stream anything ストリーム .I stream へ .I anything を書き込みます。 . .REQ .writec stream anything 末尾の改行文字を出力しないことを除けば、 .request .write と同じです。 . .REQ .writem stream xx マクロまたは文字列 .I xx の内容を、名前 .I stream のストリームに書き出します。 . .PD . .P これらの基本的な groff リクエストの他にも、 マクロの呼び出しがあります。 これらはマクロパッケージ (概要は .BR roff (7) を参照) やプリプロセッサに由来するものです。 . .P プリプロセッサマクロを認識するのは容易です。 +. これらは独特のマクロの対で括られています。 . .P .TS box, center, tab (@); c | c | c CfCB | CfCB | CfCB. -. プリプロセッサ@開始マクロ@終了マクロ = eqn@.PS@.PE grap@.G1@.G2 grn@.GS@.GE pic@.PS@.PE refer@.R1@.R2 soelim@\f[I]なし@\f[I]なし tbl@.TS@.TE .TE .P . +. .\" -------------------------------------------------------------------- .SH "エスケープシーケンス" .\" -------------------------------------------------------------------- . エスケープシーケンスは、行中の要素であり、通常は バックスラッシュ .squoted_char \[rs] で開始され、エスケープ名がそれに続きます。 場合によっては、必要な引数をつけることもあります。 +. 入力処理は、エスケープ文字あるいはその引数の直後から再開されます。 引数には区切り文字がはさまっているわけではありません。 +.\" いくつかの翻訳が抜けているようだ。 +. そのため、エスケープ名や引数の終わりを決定する方法が必要です。 . .P これは、名前 (エスケープ名、および変数名からなる引数) を 角括弧 .BI \[lB] name \[rB] で囲い、定数引数 (数式および文字) を アポストロフィ (ASCII 0x27) で .BI \[cq] constant \[cq] \f[R] のように囲うことによって実現します。 . .P エスケープ名には短い名前の省略形があります。 +. 2 文字のエスケープ名は開き括弧で .esc ( xy のように指定され、閉じ括弧は必要ありません。 +. そして、特殊文字である .squoted_char [ と .squoted_char ( 以外の 1 文字の名前はすべて .esc c のようにマーカなしで指定することができます。 . .P 長さ\~1 の定数の引数もアポストロフィのマーカを省略できますが、 2 文字の名前のときには省略できません。 . .P 1 文字のエスケープシーケンスは主に行中での 関数とシステムに関連したタスク用に使われるのに対して、 .esc ( の後に付けた 2 文字の名前は、roff システムで定義済みの特殊文字用に 使われます。 +. 2 文字より長い名前を持つエスケープシーケンス .esc[] "" name -は、ユーザ定義の名前付き文字を表しています ( -リクエスト +は、ユーザ定義の名前付き文字を表しています +(リクエスト .request char を参照してください)。 . +. .\" -------------------------------------------------------------------- .SS "1 文字のエスケープシーケンス" .\" -------------------------------------------------------------------- . .PD 0 . .\" --------- comments --------- . .ESC \[dq] コメントの開始です。 +. 行末までのものすべてが無視されます。 . .ESC # 次の改行文字までのものすべてが無視されます。 +. これは、コピーモードで解釈されます。 +. .esc \[dq] と似ていますが、終端の改行文字も無視する点が異なります。 . .\" --------- strings --------- . .ESC *\f[I]s\f[] 1 文字の名前 .I s を持った文字列変数に格納されている文字列です。 . .ESC *(\f[I]st\f[] 2 文字の名前 .I st を持った文字列変数に格納されている文字列です。 . .ESC[] * "stringvar arg1 arg2 .\|.\|." 任意の長さの名前 .I stringvar を持った文字列変数に格納されている文字列です。 引数 .IR arg1 , .IR arg2 , .I .\|.\|.\& を取ります。 . .\" --------- macro arguments --------- . .ESC $0 現在のマクロが呼び出されている名前。 +. リクエスト .request als は、1 つのマクロに複数の名前をつけることができます。 . .ESC $ x .I x 番目のマクロ / 文字列の引数。 ここで、 .I x は、1 から 9 までの数値です。 . .ESC $( xy 2 桁の番号 .I xy 番目のマクロ / 文字列の引数。 . .ESC[] $ nexp .I nexp 番目のマクロ / 文字列の引数。 ここで、 .I nexp は 1 以上の整数に評価される数値表現です。 . .ESC $* マクロ / 文字列において、引数すべてを空白文字区切りで 連結したもの。 . .ESC $@ マクロ / 文字列において、引数すべてをそれぞれダブルクォートで囲い、 空白文字で区切って連結したもの。 . .\" --------- escaped characters --------- . .ESC \[rs] バックスラッシュ 1 個に縮退します。 コピーモードでエスケープ文字として解釈されるのを 遅らせるときに便利です。 +. 表示可能なバックスラッシュには、 .esc e もしくは、 .esc [rs] を使用してください。 現在のエスケープ文字と独立なのでこちらの方が良いです。 . .ESC \[cq] 揚音アクセント符号 \[aa]。 .esc (aa と同じです。 エスケープなし: アポストロフィ、右クォーテーション記号、シングルクォート (ASCII 0x27)。 . .ESC ` 抑音アクセント符号 \[ga]。 .esc (ga と同じです。 エスケープなし: 左クォート、バッククォート (ASCII 0x60)。 . .ESC \- 現在のフォントでの \- 符号。 . .ESC . 解釈されないドット (ピリオド)。 行頭にあってもそうなります。 . .ESC % デフォルトでのオプションのハイフン文字。 . .ESC ! 透過行指定子。 . .ESC? anything ディバージョンでは、そのまま .I anything を組み込みます。 コピーモードでは、 .I anything を読み込みます。 +. エスケープシーケンス .esc ! および .esc ? も参照してください。 . . .\" --------- spacing --------- . .ESC \& space パディングされない、空白の大きさを持った空白文字 (改行もされません)。 . .ESC 0 数字の幅の空白。 . .ESC | 1/6\ em の狭い空白文字。nroff では幅 0 です。 . .ESC ^ 1/12\ em のさらに狭い空白文字。nroff では幅 0 です。 . .ESC & 表示されない、幅 0 の文字。 . .ESC ) .esc & と同様ですが、文の終わりを認識する目的で、 cflags リクエストを 用いて透過になるように宣言された文字のように振る舞うという 点で異なります。 . .ESC / 次の文字がローマン体であるときには、それの前の文字の幅を増やして 次の文字との間の空白が修正されるようにします。 . .ESC , 前の文字がローマン体であるときには、次の文字の空白を変更して 前の文字との間の空白が修正されるようにします。 . .ESC ~ 改行されない空白。 行を調整するとき、通常の単語間の空白のように 引き延ばされます。 . .ESC : -幅 0 のブレークポイント ( +幅 0 のブレークポイント (\c .esc % と似ていますが、ソフトハイフン文字は使いません)。 +. .ESC "" newline 無視される改行。 行を連続させるときのためです。 . .\" --------- structuring --------- . .ESC { 条件入力の開始。 . .ESC } 条件入力の終了。 . .\" --------- longer escape names --------- . .ESC ( sc 2 文字の名前 .I sc を持つ特殊文字。 セクション .BR "特殊文字" を参照してください。 +. .ESC[] "" name -任意の長さの名前 +任意の長さの名前 .I name を持つ名前付き文字 (というか、グリフ)。 . .ESC[] "" "comp1 comp2 .\|.\|." 要素 .IR comp1 , .IR comp2 , .I .\|.\|. からなる複合グリフ。 . .\" --------- alphabetical escapes --------- . .ESC a 解釈されないリーダ文字。 . .ESCq A anything .I anything が文字列、マクロ、ディバージョン、レジスタ、環境、あるいは フォント名として受け付けられるものの場合、\~1 に展開します。 そうでない場合、\~0 になります。 . .ESCq b abc.\|.\|.\& 角括弧を作る関数。 . .ESCq B anything .I anything が正しい数値表現として受け付けられるものの場合、\~1 に展開します。 そうでない場合、\~0 になります。 . .ESC c テキスト処理を中断します。 . .ESCq C char .I char と呼ばれる文字。 .esc[] "" char と同じですが、他の roff バージョンと互換性があります。 . .ESC d 垂直単位で 1/2 em だけ前方 (下) に移動します (nroff では 1/2 行です)。 . .ESCq D charseq .I charseq 中の文字で定義されたグラフィカルな要素を描きます。 詳細は groff info ファイルを参照してください。 . .ESC e 現在のエスケープ文字を表示する時の表記。 . .ESC E エスケープ文字と等価ですが、コピーモードでは評価されません。 . .ESC f F 1 文字の名前もしくは 1 個の数字 .I F を持つフォントに変更します。 . .ESC fP 元のフォントに戻します。 . .ESC f( fo 2 文字の名前もしくは 2 桁の数字 .I fo を持つフォントに変更します。 . .ESC[] f font 任意の長さの名前もしくは数式 .I font で表されるフォントに変更します。 . .ESC[] f "" 元のフォントに戻します。 . .ESC F f 1 文字の名前 .I f を持つフォントファミリに変更します。 . .ESC F( fm 2 文字の名前 .I fm を持つフォントファミリに変更します。 . .ESC[] F fam 任意の長さの名前 .I fam を持つフォントファミリに変更します。 . .ESC[] F "" 元のフォントファミリに戻します。 . .ESC[] g reg リクエスト .request .af に適した、名前 .I reg を持ったレジスタのフォーマットを返します。 +. 別の形式として .escarg g( xy および .escarg g x があります。 . .ESCq h N 局所的な水平移動。 右側へ .I N だけ移動します (負の値のときは左側へ移動します)。 . .ESCq H N 現在のフォントの高さを .I N に設定します。 . .ESC[] k reg 任意の長さの名前 .I reg を持つレジスタ中の水平入力位置をマークします。 別の形式では .escarg k( xy と .escarg k x です。 . .ESCq l Nc 水平線描画関数 (文字 .I c を用いることも可能です)。 . .ESCq L Nc 垂直線描画関数 (文字 .I c を用いることも可能です)。 . .ESC[] m color 色 .I color -に変更します。他の形式として、 +に変更します。 +. +他の形式として、 .escarg m( co か、 .escarg m c があります。 . .ESC[] m "" 元の色に戻します。 . .ESC[] M color 閉じた描画オブジェクトの塗りつぶし色を、色 .I color -に変更します。他の形式として、 +に変更します。 +. +他の形式として、 .escarg M( co か、 .escarg M c があります。 . .ESC M "" 元の塗りつぶし色に戻します。 . .ESC n r 1 文字の名前 .I r を持つレジスタ変数に格納されている数値。 . .ESC n( re 2 文字の名前 .I re を持つレジスタ変数に格納されている数値。 . .ESC[] n reg 任意の長さの名前 .I reg を持つレジスタ変数に格納されている数値。 . .ESCq N n 現在のフォントで、コード .I n で指定された文字を出力します。 +. 特別フォントは検索されません。 リクエスト .request char を用いて文字にフォントを追加するときに便利です。 . .ESCq o abc.\|.\|.\& 文字 .IR a , .IR b , .IR c , などを 2 度打ちします。 . .ESC O 0 グリフ出力を無効にします。 +. 内部使用が主な目的です。 . .ESC O 1 グリフ出力を有効にします。 +. 内部使用が主な目的です。 . .ESC p 改行し、その出力行を引き延ばします。 . .ESC r 垂直方向に 1\ em 逆戻りします (nroff では 1 行逆戻りします)。 . .ESCq R "name\~\[+-]n" リクエスト .request .nr .I name .I \[+-]n と同じです。 . .ESC[] s \[+-]N ポイントサイズを .I N スケールポイントに設定します。 +. 別の書式として .BI \[rs]s \[+-] [ N ]\c , .BI \[rs]s' \[+-]N '\c .Text , .BI \[rs]s \[+-] ' N '\c .Text , .escarg s( \[+-]xy\c .Text , .BI \[rs]s \[+-] ( xy\c .Text , .escarg s \[+-]x が使えることに注意してください。 これは、リクエスト .request ps と同じです。 . .ESCq S N 出力を .I N 度傾けます。 . .ESC t 解釈されない水平タブ。 . .ESC u 垂直方向に 1/2 em 逆戻りします (nroff では 1/2 行逆戻りします)。 . .ESCq v N 局所的な垂直移動。 .I N だけ下がります (負の値のときは上がります)。 . .ESC[] V env 環境変数 .I env の内容。 +. 別の書式では、 .escarg V( xy と .escarg V x が使えます。 . .ESCq w string 文字列 .I string の幅。 . .ESCq x N さらに行送りする関数 (負の値なら前へ、正の値なら後ろへ行送りします)。 . .ESCq X string .I string をデバイス制御関数として出力します。 . .ESC[] Y name 文字列変数あるいはマクロ .I name をデバイス制御関数として解釈しないように出力します。 +. 別の書式では、 .escarg Y( xy と .escarg Y x になります。 . .ESC z c 幅 0 (空白なし) で .I c を出力します。 . .ESCq Z anything .I anything を出力し、水平・垂直位置を元に戻します。 .I anything にはタブやリーダを含めてはなりません。 . .PD .P エスケープシーケンス .esc e , .esc . , .esc \[dq] , .esc $ , .esc * , .esc a , .esc n , .esc t , -.esc g , +.esc g および .escarg \& newline はコピーモードで解釈されます。 . .P .esc ( あるいは .esc [ で始まるエスケープシーケンスは 1 文字のエスケープシーケンスを 表すものではなく、2 つ以上の文字を持ったエスケープ名の 開始を示します。 . .P バックスラッシュの後に定義済みのエスケープシーケンスを 形成しない文字が続く場合は、バックスラッシュは黙って無視され、 文字そのものがマップされます。 . . .\" -------------------------------------------------------------------- .SS "特殊文字" -.\"-------------------------------------------------------------------- +.\" -------------------------------------------------------------------- . よく使われる特殊文字は、文字 .I x と .I y を用いた .BI \[rs]( xy の形式のエスケープシーケンスであらかじめ定義されています。 +. 特殊文字の中には通常のフォントに含まれているものも一部ありますが、 ほとんどは特別フォントでしか利用できません。 +. 最も重要なグリフを抜き出したものを次に示します。 完全なリストは、 .BR groff_char (7) にあります。 .RS .P .PD 0 . .ESC (bu 中黒 .ESC (co 著作権記号 .ESC (ct セント記号 (通貨) .ESC (dd 2 重ダガー .ESC (de 度記号 .ESC (dg ダガー +.ESC (rs +印刷可能な二重引用符 .ESC (em 全角ダッシュ .ESC (hy ハイフン .ESC (rg 登録記号 +.ESC (rs +印刷可能なバックスラッシュ文字 .ESC (sc セクション記号 .ESC (ul アンダライン文字 .ESC (== 等号 .ESC (>= 以上 .ESC (<= 以下 .ESC (!= 不等号 .ESC (-> 右矢印 .ESC (<- 左矢印 .ESC (+- プラスマイナス記号 .PD .RE . . .\" -------------------------------------------------------------------- .SS "文字列" .\" -------------------------------------------------------------------- . 文字列は、リクエスト .request ds を用いて定義し、エスケープシーケンス .esc * を用いて値を取り出すことができます。 . .P 文字列はマクロと名前空間を共有します。 . ですから、文字列と引数無しのマクロはおおむね等価です。 文字列をマクロのように呼び出すことも、その逆も可能です。 しかし、このやり方はしばしば予想の付かない結果を招くことに なります。 . groff では、以下の文字列があらかじめ定義されています。 . .STRING .T コマンド行オプション .option -T により指定された、現在の出力デバイス名。 . . .\" -------------------------------------------------------------------- .SH レジスタ .\" -------------------------------------------------------------------- . レジスタは値を格納する変数です。 groff では、ほとんどのレジスタは数値を格納しますが (前述セクション .B 数式 を参照してください)、なかには文字列値を保持できるものもあります。 . .P 各レジスタには名前が与えられています。 任意のレジスタを定義でき、リクエスト .request nr .I register で定義・設定できます。 . .P レジスタに格納された値は、エスケープシーケンス .esc n を用いて取り出すことができます。 . .P 最も有用なのは、定義済みのレジスタです。 +. 次からは、レジスタのことを話しているのだということを明確にするため、 .I name という表記を用いて .register name レジスタのことを示します。 +. .esc[] n "" 修飾はレジスタ名の一部ではないことを気にとめておいてください。 . . .\" -------------------------------------------------------------------- .SS "読み込み専用レジスタ" -.\"-------------------------------------------------------------------- +.\" -------------------------------------------------------------------- . 次のレジスタは、ユーザが書き換えられない定義済みの値を持った レジスタです (通常、ドットで始まるレジスタは読み込み専用です)。 +. ほとんどは、現在の設定についての情報を提供したり、リクエスト呼び出し からの結果を保存したりするものです。 . .P .PD 0 +. .REG .$ 現在のマクロの引数の個数。 . .REG .a 最後に .escq x N を用いて指定した行送り幅。 . .REG .A オプション .B \-A が使用されているときに .B troff 内で 1 が設定されます。 .B nroff 内では常に 1 です。 +. .REG .c 現在の入力行番号。 +. .REG .C 互換モードが有効になっている場合は 1 で、そうでない場合 0 です。 +. .REG .cdp 現在の環境に追加された最後の文字の深さ。 最後の文字が基準線から下に突き出ている場合に正になります。 +. .REG .ce リクエスト .request ce で設定された、センタリングされる行の残数。 +. .REG .cht 現在の環境に追加された最後の文字の高さ。 基準線よりも上に文字が突き出ている場合に正になります。 +. .REG .color 色機能が有効のとき 1 で、他の場合 0 です。 +. .REG .csk 現在の環境に追加された最後の文字の傾き。 文字の傾きとは、文字の上についたアクセント記号が文字の中央からどれだけ 右に離れて置かれるかということです。 +. .REG .d 現在のディバージョンでの垂直方向の位置です。 レジスタ .register nl と同じです。 +. .REG .ev 現在の環境の名前もしくは番号です (文字列の値です)。 +. .REG .f 現在のフォント番号です。 +. .REG .fam 現在のフォントファミリです (文字列の値です)。 +. .REG .fn 現在の (内部) 実フォント名 (文字列の値です)。 +. .REG .fp 次に空いているフォント位置番号。 +. .REG .g GNU troff では常に 1 です。 +. マクロ中で groff で動作しているかどうかをテストする場合、 このレジスタを使用すべきでしょう。 +. .REG .h 現在のページあるいはディバージョンでのテキスト基準線の 最高点です。 +. .REG .H 利用可能な水平方向の解像度 (基本単位です)。 . .REG .height 現在のフォントの高さ。これは .request \[rs]H により設定されたもの。 . .REG .hla リクエスト .B .hla で設定された現在のハイフネーション言語。 . .REG .hlc 直前で連続したハイフネーション行数。 . .REG .hlm 連続したハイフネーション行数の許される最大値。 これは、 リクエスト .request hlm で設定されます。 . .REG .hy -現在のハイフネーションフラグ ( -リクエスト +現在のハイフネーションフラグ +(リクエスト .request hy で設定されます)。 . .REG .hym -現在のハイフネーションの余白 ( -リクエスト +現在のハイフネーションの余白 +(リクエスト .request hym で設定されます)。 . .REG .hys -現在のハイフネーションの空白 ( -リクエスト +現在のハイフネーションの空白 +(リクエスト .request hys で設定されます)。 +. .REG .i 現在のインデント。 . .REG .in 現在の出力行に対して適用されるインデント。 . .REG .int 最後に出力した行に .esc c が含まれていれば正です。 +. .REG .kern ペアワイズカーニングが有効になっている場合 1 で、 無効になっていれば 0 です。 . .REG .l 現在行の長さです。 . .REG .lg -現在の合字モード ( -リクエスト +現在の合字モード +(リクエスト .request lg で設定されます)。 . .REG .linetabs -現在の行タブモード ( +現在の行タブモード (\c .request linetabs リクエストによって設定されます)。 +. .REG .ll 現在の出力行に対して適用される行の長さ。 . .REG .lt -タイトルの長さ ( -リクエスト +タイトルの長さ +(リクエスト .request lt で設定されます)。 . .REG .n 直前の出力行でのテキスト部分の長さ。 . .REG .ne トラップを生起させる原因となった最後のリクエスト .request ne が必要とした空白の量。 +. このレジスタは、 .register .trunc と一緒に使用すると便利です。 . .REG .ns 空白なしモードであれば 1 で、 そうでなければ 0 が設定されます。 . .REG .o 現在のページのオフセット。 . .REG .p 現在のページの長さ。 . .REG .pe ページ送出 (ejection) 中には 1 で、 そうでなければ 0 が設定されます。 . .REG .pn 次ページの番号。 これは、リクエスト .request pn で定義された値もしくは現在ページに 1 を足した番号の いずれかです。 . .REG .ps スケールポイントで表した現在のポイントサイズ。 . .REG .psr 最後に要求された、スケールポイントで表したポイントサイズ。 . +.REG .pvs +現在の垂直方向の後付け行送り量 (post-vertical line spacing)。 +. .REG .rj リクエスト rj によって設定された右寄せされる行の数。 . .REG .s 10 進小数での現在のポイントサイズ。 . .REG .slant 現在のフォントのスラントの値。これは .request \[rs]S で設定されたものです。 . .REG .sr 10 進小数での最後に要求されたポイントサイズ (文字列値)。 . .REG .t 次のトラップまでの距離。 +. .REG .T オプション .B \-T が使われている場合 1 に設定されます。 +. .REG .tabs 現在のタブ設定の文字列表現。 リクエスト .request ta に対する引数として使用するのに適しています。 +. .REG .trunc 最近の垂直位置トラップによって切り詰められた垂直スペースの量。 リクエスト +.request ne +によるトラップが引き起こされた場合は、 .request .ne -によるトラップが引き起こされた場合は、そのリクエストによって生じた +リクエストによって生じた 垂直移動量をさらにマイナスした値になります。 +. 別の言い方をすれば、トラップが発生した時点での、 トラップが起きなかった場合の垂直位置と現在の垂直位置との差を 表しています。 +. レジスタ .register .ne と一緒に使用すると便利です。 +. .REG .ss リクエスト .request ss の第 1 引数によって設定されたパラメータの値。 +. .REG .sss リクエスト .request ss の第 2 引数によって設定されたパラメータの値。 +. .REG .u 行連結モードのときは 1 で、そうでなければ 0 です。 . .REG .v 現在の垂直方向の行送り量。 . .REG .V 利用可能な垂直方向の解像度 (基本単位です)。 . .REG .vpt 垂直位置トラップが有効なら 1 で、無効なら 0 です。 . .REG .w 直前の文字の幅。 . .REG .warn 現在有効になっている警告の番号コードの和。 . .REG .x メジャーバージョン番号。 . .REG .y マイナバージョン番号。 . .REG .Y groff のリビジョン番号。 . .REG .z 現在のディバージョン名。 .PD . . .\" -------------------------------------------------------------------- .SS "書き込み可能なレジスタ" -.\"-------------------------------------------------------------------- +.\" -------------------------------------------------------------------- . 次のレジスタは、ユーザによって読み書き可能です。 定義済みのデフォルト値を持っていますが、ドキュメントを カスタマイズするために変更できます。 . .P .PD 0 .REG % 現在のページ番号。 . .REG c. 現在の入力行番号。 . .REG ct 文字の種類 (幅関数 .esc w で指定されます)。 . .REG dl 最後に行われたディバージョンの最大幅。 . .REG dn 最後に行われたディバージョンの高さ。 . .REG dw 現在の曜日 (1-7)。 . .REG dy 現在の日 (1-31)。 . .REG hours 深夜 0 時からの時刻。 +. 起動時に初期化されます。 . .REG hp 現在の入力行における水平位置。 . .REG llx -与えられた PostScript 画像 ( +与えられた PostScript 画像 (\c .request .psbb で設定されます) の左下 x 座標 (PostScript の unit)。 . .REG lly -与えられた PostScript 画像 ( +与えられた PostScript 画像 (\c .request .psbb で設定されます) の左下 y 座標 (PostScript 単位)。 . .REG ln 出力行番号。 . +.REG minutes +時刻の中の分数。 +. +起動時に初期化されます。 +. .REG mo 現在の月 (1-12)。 . .REG nl 最後に表示されたテキストの基準線の垂直方向の位置。 . .REG rsb .register sb と同様ですが、文字の高さおよび深さを勘定に含めています。 +. .REG rst .register st と同様ですが、文字の高さおよび深さを勘定に含めています。 +. .REG sb 文字列の、基準線の下側の深さ (幅関数 .esc w で生成されます)。 . .REG seconds 現在の 1 分の中の秒数。 . +起動時に初期化されます。 +. .REG skw .esc w 引数の最後の文字の中央からの右スキップ幅。 +. .REG slimit 0 よりも大きければ、入力スタック上のオブジェクトの最大数。 +. 0 以下であれば、制限はありません。 つまり、仮想メモリを使い果たすまで再帰呼び出しし続けることができます。 +. .REG ssc 添字の直前にある文字に追加すべき水平方向の空白量 (幅関数 .esc w で生成されます) (負の値になる可能性もあります)。 +. .REG st 文字列の、基準線の上の高さ (幅関数 .esc w で生成されます)。 +. .REG systat 最後の .request sy リクエストによって実行された .I system() 関数の戻り値。 +. .REG urx -与えられた PostScript 画像 ( +与えられた PostScript 画像 (\c .request .psbb で設定されます) の右上 x 座標 (PostScript 単位)。 . .REG ury -与えられた PostScript 画像 ( +与えられた PostScript 画像 (\c .request .psbb で設定されます) の右上 y 座標 (PostScript 単位)。 . .REG year 現在の年 (2000 年問題対応済みです)。 . .REG yr 現在の年から 1900 を引いたものです。 +. 2000 年問題対応にするにはレジスタ .register year を代わりに使用してください。 . .PD . . .\" -------------------------------------------------------------------- .SH 互換性 .\" -------------------------------------------------------------------- . groff 言語を、 .I [CSTR\~#54] で定義された古典的な troff と比較した際の違いに ついては、 .BR groff_diff (7) に記載されています。 . .P groff システムは互換モードを提供しています。このモードをどのように して呼び出すかについては、 .BR groff (1) を参照して下さい。 . . .\" -------------------------------------------------------------------- .SH バグ .\" -------------------------------------------------------------------- . バグは .MTO bug-groff@gnu.org "groff bug mailing list" 宛に報告下さい。それ自体で完全な、十分な説明を含み、 バグが再現可能な例に、どのバージョンの groff を使っていたかも 含めて下さるようお願い致します。 . . .\" -------------------------------------------------------------------- .SH 作者 -.\"-------------------------------------------------------------------- +.\" -------------------------------------------------------------------- . Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. . .P このドキュメントは、FDL (GNU Free Documentation License) バージョン 1.1 以降の条項のもとに配布されています。 +. システムに FDL のコピーがあるはずですし、 .URL http://\:www.gnu.org/\:copyleft/\:fdl.html "GNU copyleft site" からオンラインで入手可能です。 . .P 本ドキュメントは、 -.IR groff , +.IR groff すなわち GNU roff ディストリビューションの一部です。 . .MTO bwarken@mayn.de "Bernd Warken" によって書かれ、 .MTO wl@gnu.org "Werner Lemberg" が保守しています。 . . .\" -------------------------------------------------------------------- .SH "関連項目" -.\"-------------------------------------------------------------------- +.\" -------------------------------------------------------------------- . .P groff 言語の主な情報源は .B groff .BR info (1) ファイルです。 . めちゃくちゃ詳しい説明に加え、例もたくさん含まれています。 . .TP .BR groff (1) groff プログラムの用法と文書へのポインタと groff システムを 入手する方法。 . .TP .BR groff_diff (7) 古典的 roff と比較した際の groff 言語の違い。 +. これは、groff 固有の予め定義された言語要素についての 権威ある文書です。 +. .TP .BR groff_char (7) 予め定義された groff 文字 (グリフ)。 . .TP .BR groff_font (5) フォントと DESC ファイルの仕様。 . .TP .BR roff (7) roff の歴史、roff システムすべてに共通の部分について、 更に詳しい文書へのポインタ。 . .TP .I [CSTR\~#54] .URL http://\:cm.bell-labs.com/\:cm/\:cs/\:54.ps \ "Nroff/\:Troff User's Manual by Osanna & Kernighan" \[em] 古典的 troff に関するバイブル。 . +. .\" .SH 履歴 .\" Yoshiteru Kageyama 2001/05/20 JM さんの .\" groff 1.16.1 ベースを参考に更新 .\" Norihiro Kumagai 2001/03/16 訳チェック .\" Kazuo Horikawa 2001/05/20 groff 1.17 に更新 .\" Kazuo Horikawa 2001/08/07 groff 1.17.2 に更新 .\" Norihiro Kumagai 2003/06/02 groff 1.19 に更新 -. -. +.\". +.\". .\" -------------------------------------------------------------------- .\" Emacs Setup .\" -------------------------------------------------------------------- . .\" Local Variables: .\" mode: nroff .\" End: diff --git a/ja_JP.eucJP/man/man7/groff_char.7 b/ja_JP.eucJP/man/man7/groff_char.7 index 7d6bbb67e9..bd7a6e6f49 100644 --- a/ja_JP.eucJP/man/man7/groff_char.7 +++ b/ja_JP.eucJP/man/man7/groff_char.7 @@ -1,1073 +1,1442 @@ -.TH GROFF_CHAR 7 "11 October 2002" "Groff Version 1.18.1" +.TH GROFF_CHAR 7 "1 May 2003" "Groff Version 1.19" .SH 名称 -groff_char \- groff の文字名 +groff_char \- groff のグリフ名 .SH 解説 .\" The lines above were designed to satisfy `apropos'. . .\" For best results, format this document with `groff' (GNU roff). . . .\" -------------------------------------------------------------------- .\" Legalize .\" -------------------------------------------------------------------- . .ig groff_char(7) This file is part of groff (GNU roff). File position: /man/groff_char.man -Last update: 20 July 2002 +Last update: 24 Feb 2003 -Copyright (C) 1989-2000, 2001, 2002 Free Software Foundation, Inc. +Copyright (C) 1989-2000, 2001, 2002, 2003 Free Software Foundation, Inc. written by Werner Lemberg with additions by Bernd Warken Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being this .ig-section and AUTHOR, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the Free Documentation License is included as a file called FDL in the main directory of the groff source package. .. . .\" -------------------------------------------------------------------- .\" Setup Part 1 .\" -------------------------------------------------------------------- . .\" groff only .if \n(.g .mso www.tmac .\".if \n(.g .ne 2v .\".if \n(.g .sv 2v . .ds aq \(aq . .\" non-groff .if !\n(.g .if '\(aq'' .ds aq \' . .\" groff .if !\n(.g .ig -. tr \[aq]\[aq] -. if !c\[aq] \ -. ds aq \' -. \" This is very special. The standard devdvi fonts don't have a -. \" real `aq' glyph; it is defined with .char to be ' instead. -. \" The .tr request below in the definition of the C macro maps -. \" the apostrophe ' onto the `aq' glyph which would cause a -. \" recursive loop. gtroff prevents this within the .char -. \" request, trying to access glyph `aq' directly from the font. -. \" Consequently, we get a warning, and nothing is printed. -. \" -. \" The following line prevents this. -. if '\*[.T]'dvi' \ -. if !r ECFONTS \ -. ds aq \' -. \" The same is true for X -. ds dev \*[.T] -. substring dev 0 0 -. if '\*[dev]'X' .ds aq \' -. ig +. tr \[aq]\[aq] +. if !c\[aq] \ +. ds aq \' +. \" This is very special. The standard devdvi fonts don't have a +. \" real `aq' glyph; it is defined with .char to be ' instead. +. \" The .tr request below in the definition of the C macro maps +. \" the apostrophe ' onto the `aq' glyph which would cause a +. \" recursive loop. gtroff prevents this within the .char +. \" request, trying to access glyph `aq' directly from the font. +. \" Consequently, we get a warning, and nothing is printed. +. \" +. \" The following line prevents this. +. if '\*[.T]'dvi' \ +. if !r ECFONTS \ +. ds aq \' +. \" The same is true for X +. ds dev \*[.T] +. substring dev 0 0 +. if '\*[dev]'X' .ds aq \' +. ig .. +. .\" -------------------------------------------------------------------- .\" .Ac accented-char accent char (groff) +. .if !\n(.g .ig .de Ac -. char \\$1 \\$3\ -\k[acc]\h'(u;-\w'\\$2'-\w'\\$3'/2+\\\\n[skw]+(\w'x'*0)-\\\\n[skw])'\ -\v'(u;\w'x'*0+\\\\n[rst]+(\w'\\$3'*0)-\\\\n[rst])'\\$2\ -\v'(u;\w'x'*0-\\\\n[rst]+(\w'\\$3'*0)+\\\\n[rst])'\h'|\\\\n[acc]u' -. hcode \\$1 \\$3 +. if !c\\$1 \{\ +. ie c\\$2 \ +. char \\$1 \ +\k[acc]\ +\h'\w'\\$3'u'\ +\h'(u;-\w'\\$2'-\w'\\$3'/2+\\\\n[skw]+(\w'x'*0)-\\\\n[skw])'\ +\v'(u;\w'x'*0+\\\\n[rst]+(\w'\\$3'*0)-\\\\n[rst])'\ +\\$2\ +\v'(u;\w'x'*0-\\\\n[rst]+(\w'\\$3'*0)+\\\\n[rst])'\ +\h'|\\\\n[acc]u'\ +\\$3 +. el \ +. char \\$1 \\$3 +. hcode \\$1 \\$3 +. \} .. -.Ac \(vc \(ah c -.Ac \(vC \(ah C -. . .\" -------------------------------------------------------------------- .\" Setup Part 2 .\" -------------------------------------------------------------------- . -.nr Sp 3n -.ta \w'\fI出力'u+\n(Spu \ - +\w'\fI入力'u+\n(Spu \ - +\w'\fI入力'u+\n(Spu \ - +\w'periodcentered'u+\n(Spu +.nr Sp 2n . .\" -------------------------------------------------------------------- -.de C0 -. C \\$1 "" \\$1 \\$2 "\\$3" +.\" .C2/.CN (groff) +. +.if !\n(.g .ig +.de CN +. C \e[\\$1] "" \[\\$1] \\$2 "\\$3" "\\$4" .. . -.\" -------------------------------------------------------------------- -.de C1 -. C \e\\$1 "" \\\\\\$1 \\$2 "\\$3" +.\" .Ns (groff) start .CN block +. +.if !\n(.g .ig +.de Ns +. CN "\\$1" "\\$2" "\\$3" "\\$4" +. if !\n[cR] \ +. wh (\\n[nl]u + \\n[.t]u - \\n[.V]u) Fo .. . -.\" -------------------------------------------------------------------- -.\" .C2/.CN (groff) +.\" .Ne (groff) end .CN block +. .if !\n(.g .ig -.de CN -. C \e[\\$1] "" \[\\$1] \\$2 "\\$3" +.de Ne +. ch Fo +. CN "\\$1" "\\$2" "\\$3" "\\$4" .. -.if \n(.g .als C2 CN +. +.if \n(.g \{\ +. als C2 CN +. als 2s Ns +. als 2e Ne +.\} . .\" -------------------------------------------------------------------- .\" .C2 (non-groff) +. .if \n(.g .ig .de C2 -. C \e(\\$1 "" \\(\\$1 \\$2 "\\$3" +. C \e(\\$1 "" \\(\\$1 \\$2 "\\$3" "\\$4" +.. +. +.\" .2s (non-groff) start .C2 block +. +.if \n(.g .ig +.de 2s +. C2 "\\$1" "\\$2" "\\$3" "\\$4" +. if !\n(cR \ +. wh \\n(nlu+\\n(.tu-\\n(.Vu Fo +.. +. +.\" .2e (non-groff) end .C2 block +. +.if \n(.g .ig +.de 2e +. ch Fo +. C2 "\\$1" "\\$2" "\\$3" "\\$4" .. . .\" -------------------------------------------------------------------- .\" .CD (groff) +. .if !\n(.g .ig .de CD -. C \[char\\$1] \\$1 \[char\\$1] \\$2 "\\$3" +. C \[char\\$1] \\$1 \[char\\$1] \\$2 "\\$3" "\\$4" 1 +.. +. +.\" .Ds (groff) start .CD block +. +.if !\n(.g .ig +.de Ds +. CD "\\$1" "\\$2" "\\$3" "\\$4" +. if !\n[cR] \ +. wh (\\n[nl]u + \\n[.t]u - \\n[.V]u) Fo +.. +. +.\" .De (groff) end .CD block +. +.if !\n(.g .ig +.de De +. ch Fo +. CD "\\$1" "\\$2" "\\$3" "\\$4" .. . .\" -------------------------------------------------------------------- +. .do if !r ECFONTS .do fspecial CR R . +.\" .CT +. +.de CT +. nr c1 \w'\\$1' +. if \\n(c1 \ +. nr c1 +\\n(Spu +. nr c2 \\n(c1+\w'\\$2' +. if \\n(c1<\\n(c2 \ +. nr c2 +\\n(Spu +. nr c3 \\n(c2+\w'\\$3' +. if \\n(c2<\\n(c3 \ +. nr c3 +\\n(Spu +. nr c4 \\n(c3+\w'\\$4' +. if \\n(c3<\\n(c4 \ +. nr c4 +\\n(Spu +. nr c5 \\n(c4+\w'\\$5' +. if \\n(c4<\\n(c5 \ +. nr c5 +\\n(Spu +.. +. +.\" .CL +. +.de CL +\\$1\c +\h'\\n(c1u-\\n(.ku'\\$2\c +\h'\\n(c2u-\\n(.ku'\\$3\c +\h'\\n(c3u-\\n(.ku'\\$4\c +\h'\\n(c4u-\\n(.ku'\\$5\c +\h'\\n(c5u-\\n(.ku'\\$6 +. br +.. +. .\" -------------------------------------------------------------------- -.\" input-name decimal-code output-name ps-name description +.\" input-name decimal-code output-name ps-name unicode description is-char .\" .C (groff) +. .if !\n(.g .ig .de C -. if c\\$3 \{\ -. ft CR -. tr `\`'\*[aq] -. in 0 -. di CH -. nop \&\\$1 -. br -. di -. in -. ft -. ds CH \\*[CH]\ -. tr ``'' -. nop \&\\$3\t\\*[CH]\t\\$2\t\\$4\t\\$5 -. \} +. nr CH 1 +. if \\$7 \ +. if !c\\$1 \ +. nr CH 0 +. ie !\\n[CH] \ +. ds CH +. el \{\ +. ft CR +. tr `\`'\*[aq] +. in 0 +. di CH +. nop \&\\$1 +. br +. di +. chop CH +. in +. ft +. ds CH \\*[CH] +. tr ``'' +. \} +. di CC +. ie c\\$3 \{\ +. nop \\&\\$3\c +. \" The \x values assure that oversized symbols don't +. \" overlap vertically. The constant 1.5p is heuristic. +. nop \x'(\w'('*0 - ((\\n[.cht]u - \\n[rst]u - 1.5p) >? 0))'\c +. nop \x'((\\n[.cdp]u + \\n[rsb]u - 1.5p) >? 0)'\c +. nop \h'(\\n[c1]u - \\n[.k]u)'\\*[CH]\c +. nop \h'(\\n[c2]u - \\n[.k]u)'\\$2\c +. \} +. el \{\ +. nop (N/A)\c +. nop \h'(\\n[c1]u - \\n[.k]u)'\\*[CH]\c +. \} +. nop \h'(\\n[c3]u - \\n[.k]u)'\\$4\c +. nop \h'(\\n[c4]u - \\n[.k]u)'\\$5\c +. br +. di +. \" we move upwards later on so force a page break now if necessary +. if (\\n[dn] >= \\n[.t]) \ +. bp +. mk C1 +. in 0 +. CC +. in +. \" allow multiple lines for last column +. in +\\n[c5]u +. mk C2 +. sp |\\n[C1]u +. nr PN \\n[%] +. ad l +. nop \\$6 +. ad b +. in +. if (\\n[PN] == \\n[%]) \ +. if (\\n[nl] < \\n[C2]) \ +. sp |\\n[C2]u .. . .\" -------------------------------------------------------------------- .\" .C (non-groff) +. .if \n(.g .ig .de C -. if !'\\$3'' \{\ -. ft B -. tr `\`'\*(aq -. in 0 -. di CH +. ft B +. tr `\`'\*(aq +. in 0 +. di CH \&\\$1 -. br -. di -. in -. ft -. ds CH \\*(CH\ -. tr ``'' -\&\\$3\t\\*(CH\t\\$2\t\\$4\t\\$5 -. \} +. br +. di +. in +. ft +. ds CH \\*(CH\ +. tr ``'' +. di CC +. ie !'\\$3'' \{\ +\&\\$3\c +\h'\\n(c1u-\\n(.ku)'\\*(CH\c +\h'\\n(c2u-\\n(.ku)'\\$2\c +\h'\\n(c3u-\\n(.ku)'\\$4\c +. \} +. el \{\ +(N/A)\c +\h'\\n(c1u-\\n(.ku)'\\*(CH\c +\h'\\n(c3u-\\n(.ku)'\\$4\c +. \} +\h'\\n(c4u-\\n(.ku)'\\$5\c +\h'\\n(c5u-\\n(.ku)'\\$6 +. br +. di +. \" we move upwards later on so force a page break now if necessary +. if \\n(dn>=\\n(.t \ +. bp +. mk C1 +. in 0 +. CC +. in +. \" allow multiple lines for last column +. in +\\n(c5u +. mk C2 +. sp |\\n(C1u +. nr PN \\n% +. ad l +\\$6 +. ad b +. in +. if \\n(PN==\\n% \ +. if \\n(nl<\\n(C2 \ +. sp |\\n(C2u .. . .\" -------------------------------------------------------------------- +. .de Fo -'bp -.He +' bp +. He .. . -.\" -------------------------------------------------------------------- -.de He -.P -'nf -.ft I -出力 入力 入力 PostScript 注 - 名 コード 名 -.ft -.P +.de Pa +. P +. ne 3 .. +. +. +. .\" $FreeBSD$ .\" .\" groff_char.7 の表記を尊重しました。 .\" JIS X 0212 の附属書 3 表 3「0208とJISX0221との対応表」を、 .\" 文字の名前の参考としてではなく、英単語と日本語の単語の対応の .\" 参考としました。 .\" Kazuo Horikawa 1998/12/06 .\" -. .\" -------------------------------------------------------------------- .\" .SH 解説 .\" -------------------------------------------------------------------- . このマニュアルページは標準的な .B groff -への入力文字を列挙しています。 +グリフ名とデフォルト入力マッピング、\%latin-1 を列挙しています。 . -この文書での出力文字は、 +この文書でのグリフは、 .RB ( man (1) や roff 整形器への .B \-T オプションで) 選択された出力デバイスに依存して、 見え方が異なります。 . このマニュアルページを印刷 (表示) するのに用いられるデバイスで -利用可能な文字のみが表示されます -.ie \n(.g (現在使用されているデバイスは `\*(.T' です) -。 +利用できないグリフは +.ie \n(.g `(N/A)' でマークされます。 +現在使用されているデバイスは `\*(.T' です。 +.el `(N/A)' . . .P 実際のバージョンでは、 .B groff -は直接入力に対しては 8 ビット文字のみを提供し、 +は直接入力に対しては \%8 ビット文字のみを提供し、 更なるグリフに対しては名前付き文字を提供します。 . -ASCII プラットフォームでは、0 から 127 (10 進数) の範囲の文字コードは -通常の 7 ビット ASCII 文字を表現しますが、 -127 と 255 の間のコードは対応する -.I Latin-1 -.RI ( ISO-8859-1 ) +ASCII プラットフォームでは、0 から 127 (10 進数) の範囲の入力文字コードは +通常の \%7 ビット ASCII 文字を表現しますが、 +127 と 255 の間のコードはデフォルトで対応する +.I \%Latin-1 +.RI ( \%ISO-8859-1 ) コード集合の文字として解釈されます。 . +このマッピングはファイル \f(CWlatin1.tmac\fP に含まれていて、 +異なった入力エンコードをロードすることによって変更できます。 +. +いくつかの入力文字は +.BR groff +によって予約され、内部の使用のため、または特別の入力目的のための +いずれかであることに注意してください。 +. EBCDIC プラットフォームでは、コードページ .B cp1047 -のみがサポートされています (Latin-1 と同じ文字を含みます)。 +のみがサポートされています (\%Latin-1 と同じ文字を含みます。 +入力エンコードファイルは \f(CWcp1047.tmac\fP と呼ばれます)。 +. +再び、いくつかの入力文字は内部おおび特別な目的のために予約されています。 . -.IR Latin-2 -などの他の 8 ビット文字の設定は、 +.IR \%Latin-2 +などの他の \%8 ビット文字の設定は、 (経験のあるユーザにとっては) どちらかというと簡単です。 .B groff の次のメジャーバージョンは Unicode を使用しますので、 追加のエンコードは提供されません。 . . .P -すべての roff システムは、名前付き文字の概念を提供します。 +すべての roff システムは、名前付きグリフの概念を提供します。 . 伝統的な roff システムでは長さ 2 の名前のみが使用されていましたが、 groff は長い名前も提供します。 . -7 ビット ASCII の範囲外のすべての文字に対しては名前付き文字だけを -使うよう、強くお勧めします。 +印字可能な \%7 ビット ASCII の範囲外のすべての表示文字に対しては +名前付きグリフだけを使うよう、強くお勧めします。 . . .P 定義済みの groff エスケープシーケンス (名前の長さ 1 のもの) には、 1 文字を生成するものがあります。 これらは歴史的な理由で存在したものや、構文文字の印字可能バージョンです。 . -これらには -.BR \e\e , -.BR \e' , -.BR \e` , -.BR \e- , -.BR \e. , -.BR \ee -があります。 +これらには `\f(CW\e\e\fP', `\f(CW\e\'\fP', `\f(CW\e`\fP', `\f(CW\e-\fP', +`\f(CW\e.\fP', `\f(CW\ee\fP' があります。 .BR groff (7) を参照してください。 . . .P -groff では、これらの異なったタイプの文字はすべて、 -.B .if\ c -条件で陽的にテスト可能です。 +groff では、これらの異なったタイプの文字とグリフは +すべて、`\f(CW.if\ c\fP' 条件で確実にテスト可能です。 . . .\" -------------------------------------------------------------------- .SH 参照 .\" -------------------------------------------------------------------- . -この節では、groff の文字が表形式で指定します。 +この節では、groff のグリフは表形式で明記します。 . 列の意味は次の通りです。 . . .TP .I "出力" -現在のデバイスに対して、どのように印字されるかを示します。 +現在のデバイスに対してグリフがどのように印字されるかを示します。 他のデバイス上では非常に異なった形になるかもしれませんが、 常に同じグリフを表現します。 . . .TP .I "入力名" キーボード上のキーで直接もしくは groff エスケープシーケンスを用いて、 -文字をどのように入力するかを示します。 +グリフをどのように入力するかを示します。 . . .TP .I "入力コード" -この欄は単一の文字で入力することのできる文字において用いられ、 -その文字の ISO Latin-1 10 進数コードが書かれています。 +この欄は単一の文字で入力することのできるグリフにおいて用いられ、 +その文字の ISO \%Latin-1 10 進数コードが書かれています。 . -このコードは Unicode 文字の下位 256 個と等価です -(0 から 127 の範囲の 7 ビット ASCII を含みます)。 +このコードは、0 から 127 の範囲の \%7 ビット ASCII を含む、 +Unicode 文字の下位 256 個と等価であることに注意してください。 . . .TP .I "PostScript 名" -欄には出力文字の一般的な PostScript 名が示されます。 +欄にはグリフの一般的な PostScript 名が示されます。 +. +. +.TP +.I "分解された Unicode" +合成グリフ名で使用されるグリフ名です。 +. . . .\" -------------------------------------------------------------------- -.SS "ASCII 文字" +.SS "7 ビット文字コード 32-126" .\" -------------------------------------------------------------------- . -これらは、7 ビット ASCII コード値を持つ基本文字です。 +これらは、7 ビット ASCII コード値に割り当てられる基本グリフです。 . -これらは、文字標準 ISO-8859-1 (Latin-1) および Unicode +それは、文字標準 \%ISO-8859-1 (\%Latin-1) および Unicode .RI ( "C0 制御および基本ラテン" -の範囲) の最初の 127 文字と等価です。 +の範囲) の印字可能な文字と等価です。 . -下記のコード範囲は非常に良く知られていますので、 -空間を節約するためにすべてのコードエントリは書きません。 +合成グリフ名に使用されるグリフ名は 'u0020' から `u007E' です。 +. +. +.P +範囲 \%0\-31 と文字 127 の入力文字は印字可能な文字で +.I ない +ことに注意してください。 +. +とにかくそれらのほとんどは +.B groff +には無効の入力文字で、有効なものには特別な意味があります。 +. +EBCDIC については、印字可能な文字は範囲 \%66\-255 です。 . -.TP -0\-32 -制御文字 (それら自身を印字)。 . .TP 48\-57 -10 進数字の 0 から 9 (それら自身を印字)。 +10 進数字の 0 から\ 9 (それら自身を印字)。 +. . .TP 65\-90 大文字 A\-Z (それら自身を印字)。 . +. .TP 97\-122 小文字 a\-z (それら自身を印字)。 . -.TP -127 -制御文字 (それ自身を印字)。 . .P -残りの範囲は、アルファベットでも数値でもない印字可能文字を構成します。 -それらのみを下記に列挙します。 +残っているほとんどの文字はそれら自身として印刷する範囲として +まったく表現されていません。 +唯一の例外として以下の文字があります: . -以下の表にあるように、ほとんどの文字がそれら自身を印字します。 -例外は次の文字です: . .TP .B \` -ISO Latin-1 `グレーブアクセント' (コード 96) は ` として、 +ISO \%Latin-1 `グレーブアクセント' (コード\ 96) は ` として、 すなわち一重開き引用符として印字されます。 +`\f(CW\e`\fP' でオリジナルの文字を得られます。 +. . .TP .B \*(aq -ISO Latin-1 `アポストロフィ' (コード 39) は ' として、 +ISO \%Latin-1 `アポストロフィ' (コード\ 39) は ' として、 すなわち一重閉じ引用符として印字されます。 -対応する ISO Latin-1 文字は、 -.B \e` -および -.BR \e(aq -で得られます。 +`\f(CW\e(aq\fP' でオリジナルの文字を得られます。 +. . .TP .B - -ISO Latin-1 の `ハイフン、負符号' (コード 45) はハイフンとして +ISO \%Latin-1 の `ハイフン、負符号' (コード\ 45) はハイフンとして 表示されます。 -負符号は -.BR \e- -で得られます。 +負符号は `\f(CW\e-\fP' で得られます。 +. . .TP .B ~ -ISO Latin-1 の `チルド' (コード 126)。 -より大きいグリフは -.BR \e(ti -で得られます。 +ISO \%Latin-1 の `チルダ' (コード\ 126) は付加記号として使用できるように +サイズが減少されます。 +より大きいグリフは `\f(CW\e(ti\fP' で得られます。 +. . .TP .B ^ -ISO Latin-1 の `サーカムフレクスアクセント' (コード 94) -より大きいグリフは -.BR \e(ha -で得られます。 +ISO \%Latin-1 の `サーカムフレクスアクセント' (コード 94) は +付加記号として使用できるようにサイズが減少されます。 +より大きいグリフは `\f(CW\e(ha\fP' で得られます。 . . .P -.if !\n[cR] .wh \n(nlu+\n(.tu-\n(.Vu Fo +.CT "\fI出力" "\fI入力" "\fI入力X" "bracketright" "XXXXXXX" +.de He +. P +. ne 4 +. ft I +. CL "出力" "入力" "入力" "PostScript" "Unicode" "注" +. CL "" "名" "コード" "名" "分解" "" +. ft +. P +.. .He -.CD 33 exclam -.CD 34 quotedbl -.CD 35 numbersign -.CD 36 dollar -.CD 37 percent -.CD 38 ampersand -.CD 39 quoteright -.CD 40 parenleft -.CD 41 parenright -.CD 42 asterisk -.CD 43 plus -.CD 44 comma -.CD 45 hyphen -.CD 46 period -.CD 47 slash -.CD 58 colon -.CD 59 semicolon -.CD 60 less -.CD 61 equal -.CD 62 greater -.CD 63 question -.CD 64 at -.CD 91 bracketleft -.CD 92 backslash -.CD 93 bracketright -.CD 94 circumflex "サーカムフレクスアクセント" -.CD 95 underscore -.CD 96 quoteleft -.CD 123 braceleft -.CD 124 bar -.CD 125 braceright -.CD 126 tilde "チルドアクセント" -.ch Fo +.Ds 33 exclam u0021 +.CD 34 quotedbl u0022 +.CD 35 numbersign u0023 +.CD 36 dollar u0024 +.CD 37 percent u0025 +.CD 38 ampersand u0026 +.CD 39 quoteright u0027 +.CD 40 parenleft u0028 +.CD 41 parenright u0029 +.CD 42 asterisk u002A +.CD 43 plus u002B +.CD 44 comma u002C +.CD 45 hyphen u2010 +.CD 46 period u002E +.CD 47 slash u002F +.CD 58 colon u003A +.CD 59 semicolon u003B +.CD 60 less u003C +.CD 61 equal u003D +.CD 62 greater u003E +.CD 63 question u003F +.CD 64 at u0040 +.CD 91 bracketleft u005B +.CD 92 backslash u005C +.CD 93 bracketright u005D +.CD 94 circumflex u005E "サーカムフレクスアクセント" +.CD 95 underscore u005F +.CD 96 quoteleft u0060 +.CD 123 braceleft u007B +.CD 124 bar u007C +.CD 125 braceright u007D +.De 126 tilde u007E "チルダアクセント" . . .\" -------------------------------------------------------------------- -.SS "Latin-1 特殊文字" +.SS "8 ビット文字コード 160 から 255" .\" -------------------------------------------------------------------- . -これらの文字は、文字コード 128 から 255 の範囲です。 -. これらは、 .I Latin-1 .RI ( iso-8859-1 ) コード集合の文字、すなわち Unicode の範囲 .IR "C1 制御と Latin-1 補足" -と等価なものの文字として解釈されます。 +と等価なものの印字可能文字として解釈されます。 . -.TP -128\-159 . -C1 制御。 -それら自身を印字しますが、効果はほとんど未定義です。 +.P +(非 EBCDIC ホストの) 範囲 128-159 の入力文字は印字可能な文字ではありません。 +. . .TP 160 . -ISO Latin-1 の +ISO \%Latin-1 の .I ブレーク無しスペース -はエスケープされたスペース文字 -.BR `\e\ ' -にマップされています。 +は伸縮可能なスペース (空白) 文字 `\f(CW\e~\fP' にマップされます。 +. . .TP 173 . -ソフトハイフン制御文字 (それ自身を印字)。 +ソフトハイフン制御文字。 . -groff はこの文字を出力に使いません +.B groff +はこの文字を出力に使いません (そのため、下記の表からは省略されています)。 -入力文字 173 は -.BR \e% -にマップされています。 +入力文字\ 173 は `\f(CW\e%\fP' にマップされています。 . . .P -残りの範囲 (161\-172, 174\-255)、すなわち Unicode で -.I Latin-1 補足 -と呼ばれるものは、それら自身を印字する印字可能文字です。 +残りの範囲 (\%161\-172, \%174\-255) は +それら自身を印字する印字可能文字です。 . -Latin-1 コードページを持つシステムではキーボードから直接指定可能ですが、 -等価な名前付き文字を使った方が良いです。 +\%Latin-1 コードページを持つシステムではキーボードから直接指定可能ですが、 +グリフ名を使った方が良いです。 次の節を見てください。 . -. .P -.if !\n[cR] .wh \n(nlu+\n(.tu-\n(.Vu Fo +.CT "\fI出力" "\fI入力" "\fI入力X" "guillemotright" "decomposed" .He -.CD 161 exclamdown "逆向きの感嘆符" -.CD 162 cent -.CD 163 sterling -.CD 164 currency -.CD 165 yen -.CD 166 brokenbar -.CD 167 section -.CD 168 dieresis -.CD 169 copyright -.CD 170 ordfeminine -.CD 171 guillemotleft -.CD 172 logicalnot -.CD 174 registered -.CD 175 macron -.CD 176 degree -.CD 177 plusminus -.CD 178 twosuperior -.CD 179 threesuperior -.CD 180 acute "アキュートアクセント" -.CD 181 mu "マイクロ記号" -.CD 182 paragraph -.CD 183 periodcentered -.CD 184 cedilla -.CD 185 onesuperior -.CD 186 ordmasculine -.CD 187 guillemotright -.CD 188 onequarter -.CD 189 onehalf -.CD 190 threequarters -.CD 191 questiondown -.CD 192 Agrave -.CD 193 Aacute -.CD 194 Acircumflex -.CD 195 Atilde -.CD 196 Adieresis -.CD 197 Aring -.CD 198 AE -.CD 199 Ccedilla -.CD 200 Egrave -.CD 201 Eacute -.CD 202 Ecircumflex -.CD 203 Edieresis -.CD 204 Igrave -.CD 205 Iacute -.CD 206 Icircumflex -.CD 207 Idieresis -.CD 208 Eth -.CD 209 Ntilde -.CD 210 Ograve -.CD 211 Oacute -.CD 212 Ocircumflex -.CD 213 Otilde -.CD 214 Odieresis -.CD 215 multiply -.CD 216 Oslash -.CD 217 Ugrave -.CD 218 Uacute -.CD 219 Ucircumflex -.CD 220 Udieresis -.CD 221 Yacute -.CD 222 Thorn -.CD 223 germandbls -.CD 224 agrave -.CD 225 aacute -.CD 226 acircumflex -.CD 227 atilde -.CD 228 adieresis -.CD 229 aring -.CD 230 ae -.CD 231 ccedilla -.CD 232 egrave -.CD 233 eacute -.CD 234 ecircumflex -.CD 235 edieresis -.CD 236 igrave -.CD 237 iacute -.CD 238 icircumflex -.CD 239 idieresis -.CD 240 eth -.CD 241 ntilde -.CD 242 ograve -.CD 243 oacute -.CD 244 ocircumflex -.CD 245 otilde -.CD 246 odieresis -.CD 247 divide -.CD 248 oslash -.CD 249 ugrave -.CD 250 uacute -.CD 251 ucircumflex -.CD 252 udieresis -.CD 253 yacute -.CD 254 thorn -.CD 255 ydieresis -.ch Fo +.Ds 161 exclamdown u00A1 "逆向きの感嘆符" +.CD 162 cent u00A2 +.CD 163 sterling u00A3 +.CD 164 currency u00A4 +.CD 165 yen u00A5 +.CD 166 brokenbar u00A6 +.CD 167 section u00A7 +.CD 168 dieresis u00A8 +.CD 169 copyright u00A9 +.CD 170 ordfeminine u00AA +.CD 171 guillemotleft u00AB +.CD 172 logicalnot u00AC +.CD 174 registered u00AE +.CD 175 macron u00AF +.CD 176 degree u00B0 +.CD 177 plusminus u00B1 +.CD 178 twosuperior u00B2 +.CD 179 threesuperior u00B3 +.CD 180 acute u00B4 "アキュートアクセント" +.CD 181 mu u00B5 "マイクロ記号" +.CD 182 paragraph u00B6 +.CD 183 periodcentered u00B7 +.CD 184 cedilla u00B8 +.CD 185 onesuperior u00B9 +.CD 186 ordmasculine u00BA +.CD 187 guillemotright u00BB +.CD 188 onequarter u00BC +.CD 189 onehalf u00BD +.CD 190 threequarters u00BE +.CD 191 questiondown u00BF +.CD 192 Agrave u0041_0300 +.CD 193 Aacute u0041_0301 +.CD 194 Acircumflex u0041_0302 +.CD 195 Atilde u0041_0303 +.CD 196 Adieresis u0041_0308 +.CD 197 Aring u0041_030A +.CD 198 AE u00C6 +.CD 199 Ccedilla u0043_0327 +.CD 200 Egrave u0045_0300 +.CD 201 Eacute u0045_0301 +.CD 202 Ecircumflex u0045_0302 +.CD 203 Edieresis u0045_0308 +.CD 204 Igrave u0049_0300 +.CD 205 Iacute u0049_0301 +.CD 206 Icircumflex u0049_0302 +.CD 207 Idieresis u0049_0308 +.CD 208 Eth u00D0 +.CD 209 Ntilde u004E_0303 +.CD 210 Ograve u004F_0300 +.CD 211 Oacute u004F_0301 +.CD 212 Ocircumflex u004F_0302 +.CD 213 Otilde u004F_0303 +.CD 214 Odieresis u004F_0308 +.CD 215 multiply u00D7 +.CD 216 Oslash u00D8 +.CD 217 Ugrave u0055_0300 +.CD 218 Uacute u0055_0301 +.CD 219 Ucircumflex u0055_0302 +.CD 220 Udieresis u0055_0308 +.CD 221 Yacute u0059_0301 +.CD 222 Thorn u00DE +.CD 223 germandbls u00DF +.CD 224 agrave u0061_0300 +.CD 225 aacute u0061_0301 +.CD 226 acircumflex u0061_0302 +.CD 227 atilde u0061_0303 +.CD 228 adieresis u0061_0308 +.CD 229 aring u0061_030A +.CD 230 ae u00E6 +.CD 231 ccedilla u0063_0327 +.CD 232 egrave u0065_0300 +.CD 233 eacute u0065_0301 +.CD 234 ecircumflex u0065_0302 +.CD 235 edieresis u0065_0308 +.CD 236 igrave u0069_0300 +.CD 237 iacute u0069_0301 +.CD 238 icircumflex u0069_0302 +.CD 239 idieresis u0069_0308 +.CD 240 eth u00F0 +.CD 241 ntilde u006E_0303 +.CD 242 ograve u006F_0300 +.CD 243 oacute u006F_0301 +.CD 244 ocircumflex u006F_0302 +.CD 245 otilde u006F_0303 +.CD 246 odieresis u006F_0308 +.CD 247 divide u00F7 +.CD 248 oslash u00F8 +.CD 249 ugrave u0075_0300 +.CD 250 uacute u0075_0301 +.CD 251 ucircumflex u0075_0302 +.CD 252 udieresis u0075_0308 +.CD 253 yacute u0079_0301 +.CD 254 thorn u00FE +.De 255 ydieresis u0079_0308 . . .\" -------------------------------------------------------------------- -.SS "名前付き文字" +.SS "名前付きグリフ" .\" -------------------------------------------------------------------- . -roff システムで特殊文字を指定する標準の方法が、 -名前付き文字の成句です。 -. -エスケープシーケンスを使用することで、これらを文書テキストに埋め込めます。 +エスケープシーケンスを使用することで、グリフ名を文書テキストに埋め込めます。 . .BR groff (7) が、これらのエスケープシーケンスがどのように見えるのかを記述しています。 . -文字名は、 -ASCII または Latin-1 コード集合の任意の文字から構成可能です。 +グリフ名は、 +ASCII または \%Latin-1 コード集合の任意の文字から構成可能です。 アルファベットと数値だけではありません。 . -以下例です: +以下は例です: . .TP -.BI \e c +\f(CW\e\fP\fIc\fP 名前 .IR c -を持つ文字。 +を持つグリフ。 名前は 1 文字 (長さ 1) です。 . .TP -.BI \e( ch +\f(CW\e(\fP\fIch\fP 2 文字の名前 .IR ch -を持つ名前付き文字。 +を持つグリフ。 . .TP -.BI \e[ 文字名 ] -.I 文字名 -という名を持つ名前付き文字 -(名前の長さは 1, 2, 3, .\|.\|.)。 +\f(CW\e[\fP\fIchar_name\fP\f(CW]\fP +名前 +.I char_name +を持つグリフ (長さは 1, 2, 3, .\|.\|.)。 +. +.TP +\f(CW\e[\fP\fIbase_glyph composite_1 composite_2 .\|.\|.\fP\f(CW]\fP +合成グリフ。 +より詳細に関して以下を参照してください。 . . .P -groff では、各 8 ビット入力文字を -.BI \en[char n ] +groff では、各 \%8 ビット入力文字を +`\f(CW\e[char\fP\fIn\fP\f(CW]\fP' という表現で参照可能です。 ここで .I n -は文字の 10 進コードであり、先頭に 0 を付けない 0 から 255 の数値です。 +は文字の 10 進コードであり、先頭に 0 を付けない 0 から 255 の数値です +(それらの実体はグリフ名では +.I ありません\c +)。 . -これらは、 -.B .trin -リクエストを使用して、グリフのエンティティにマップされます。 +それらは通常、\f(CW.trin\fP リクエストを使用して、グリフにマップされます。 . -更に、新規文字名を -.B .char -リクエストで作成可能です。 +別の特別の約束事は Unicode コードポイントから直接得られた +名前でのグリフの取り扱いです。 +以下でこれについて議論します。 +. +更に、新規グリフ名は \f(CW.char\fP リクエストで作成可能です。 .BR groff (7) を参照してください。 . +.P +以下では、`注' 欄のプラス記号は、特定のグリフ名がオリジナル +troff 文書 CSTR\ 54 の PS バージョンに現れることを示します。 +. . .P -.\" we don't use the third column -.ta \w'\fI出力'u+\n(Spu \ - +\w'\fI入力'u+\n(Spu-1n \ - +1n \ - +\w'periodcentered'u+\n(Spu -.if !\n[cR] .wh \n(nlu+\n(.tu-\n(.Vu Fo +.CT "\fI出力" "\f(CW\e[-D]" "" "Ocircumflex" "u0066_0066_006C" .de He -.P -'nf -.ft I -出力 入力 PostScript 注 - 名 名 -.ft -.P +. P +. ne 4 +. ft I +. CL "出力" "入力" "" "PostScript" "Unicode" "注" +. CL "" "名" "" "名" "分解" "" +. ft +. P .. .He -.C2 -D Eth "アイスランド語の大文字 eth" -.C2 Sd eth "アイスランド語の小文字 eth" -.C2 TP Thorn "アイスランド語の大文字 thorn" -.C2 Tp thorn "アイスランド語の小文字 thorn" -.C2 ss germandbls "ドイツ語の鋭い s" +.2s -D Eth u00D0 "大文字 eth" +.C2 Sd eth u00F0 "小文字 eth" +.C2 TP Thorn u00DE "大文字 thorn" +.C2 Tp thorn u00FE "小文字 thorn" +.2e ss germandbls u00DF "ドイツ語の鋭い s" +. +.Pa +.I リゲチャと他の Latin グリフ +.P +.2s ff ff u0066_0066 "ff のリゲチャ +" +.C2 fi fi u0066_0069 "fi のリゲチャ +" +.C2 fl fl u0066_006C "fl のリゲチャ +" +.C2 Fi ffi u0066_0066_0069 "ffi のリゲチャ +" +.C2 Fl ffl u0066_0066_006C "ffl のリゲチャ +" +.C2 /L Lslash u0141 "(ポーランド語)" +.C2 /l lslash u0142 "(ポーランド語)" +.C2 /O Oslash u00D8 "(スカンジナビア語)" +.C2 /o oslash u00F8 "(スカンジナビア語)" +.C2 AE AE u00C6 +.C2 ae ae u00E6 +.C2 OE OE u0152 +.C2 oe oe u0153 +.C2 IJ IJ u0132 "(オランダ語)" +.C2 ij ij u0133 "(オランダ語)" +.C2 .i dotlessi u0131 "(トルコ語)" +.2e .j dotlessj --- "ドットなし j" +. +.Pa +.I アクセント付き文字 +.P +.2s 'A Aacute u0041_0301 +.C2 'C Cacute u0043_0301 +.C2 'E Eacute u0045_0301 +.C2 'I Iacute u0049_0301 +.C2 'O Oacute u004F_0301 +.C2 'U Uacute u0055_0301 +.C2 'Y Yacute u0059_0301 +.C2 'a aacute u0061_0301 +.C2 'c cacute u0063_0301 +.C2 'e eacute u0065_0301 +.C2 'i iacute u0069_0301 +.C2 'o oacute u006F_0301 +.C2 'u uacute u0075_0301 +.C2 'y yacute u0079_0301 +.C2 :A Adieresis u0041_0308 "ウムラウト付き A" +.C2 :E Edieresis u0045_0308 +.C2 :I Idieresis u0049_0308 +.C2 :O Odieresis u004F_0308 +.C2 :U Udieresis u0055_0308 +.C2 :Y Ydieresis u0059_0308 +.C2 :a adieresis u0061_0308 +.C2 :e edieresis u0065_0308 +.C2 :i idieresis u0069_0308 +.C2 :o odieresis u006F_0308 +.C2 :u udieresis u0075_0308 +.C2 :y ydieresis u0079_0308 +.C2 ^A Acircumflex u0041_0302 +.C2 ^E Ecircumflex u0045_0302 +.C2 ^I Icircumflex u0049_0302 +.C2 ^O Ocircumflex u004F_0302 +.C2 ^U Ucircumflex u0055_0302 +.C2 ^a acircumflex u0061_0302 +.C2 ^e ecircumflex u0065_0302 +.C2 ^i icircumflex u0069_0302 +.C2 ^o ocircumflex u006F_0302 +.C2 ^u ucircumflex u0075_0302 +.C2 `A Agrave u0041_0300 +.C2 `E Egrave u0045_0300 +.C2 `I Igrave u0049_0300 +.C2 `O Ograve u004F_0300 +.C2 `U Ugrave u0055_0300 +.C2 `a agrave u0061_0300 +.C2 `e egrave u0065_0300 +.C2 `i igrave u0069_0300 +.C2 `o ograve u006F_0300 +.C2 `u ugrave u0075_0300 +.C2 ~A Atilde u0041_0303 +.C2 ~N Ntilde u004E_0303 +.C2 ~O Otilde u004F_0303 +.C2 ~a atilde u0061_0303 +.C2 ~n ntilde u006E_0303 +.C2 ~o otilde u006F_0303 +.C2 vS Scaron u0053_030C +.C2 vs scaron u0073_030C +.C2 vZ Zcaron u005A_030C +.C2 vz zcaron u007A_030C +.C2 ,C Ccedilla u0043_0327 +.C2 ,c ccedilla u0063_0327 +.C2 oA Aring u0041_030A +.2e oa aring u0061_030A +. +.Pa +.I アクセント +.P +.B 合成 +リクエストはアクセントの大部分を非スペースグリフ名にマップするために +使用されます。 +括弧で与えられた値はオリジナル (スペース) の一つです。 . .P -.I リゲチャ -.C2 ff ff "ff のリゲチャ" -.C2 fi fi "fi のリゲチャ" -.C2 fl fl "fl のリゲチャ" -.C2 Fi ffi "ffi のリゲチャ" -.C2 Fl ffl "ffl のリゲチャ" -.C2 AE AE -.C2 ae ae -.C2 OE OE -.C2 oe oe -.C2 IJ IJ "オランダ語の IJ リゲチャ" -.C2 ij ij "オランダ語の ij リゲチャ" -.C2 .i dotlessi "点のない i (トルコ語)" -.C2 .j dotlessj "点のない j" +.Ac \(vc \(ah c +.Ac \('a \(aa a . +.\" we don't use the third column +.CT "\fIOutput" "\f(CW\e[-D]" "" "quotesinglebase" "uCCCC (uCCCC)" +.He +.2s a" hungarumlaut "u030B (u02DD)" "(ハンガリー語)" +.C2 a- macron "u0304 (u00AF)" +.C2 a. dotaccent "u0307 (u02D9)" +.C2 a^ circumflex "u0302 (u005E)" +.C2 aa acute "u0301 (u00B4)" "+" +.C2 ga grave "u0300 (u0060)" "+" +.C2 ab breve "u0306 (u02D8)" +.C2 ac cedilla "u0327 (u00B8)" +.C2 ad dieresis "u0308 (u00A8)" "ウムラウト" +.C2 ah caron "u030C (u02C7)" "ハチェック h\('a\(vcek" +.C2 ao ring "u030A (u02DA)" "円" +.C2 a~ tilde "u0303 (u007E)" +.C2 ho ogonek "u0328 (u02DB)" "フック" +.C2 ha asciicircum u005E "(スペース)" +.2e ti asciitilde u007E "(スペース)" +. +.Pa +.I 引用符 .P -.I アクセント付き文字 -.C2 'A Aacute -.C2 'C Cacute -.C2 'E Eacute -.C2 'I Iacute -.C2 'O Oacute -.C2 'U Uacute -.C2 'Y Yacute -.C2 'a aacute -.C2 'c cacute -.C2 'e eacute -.C2 'i iacute -.C2 'o oacute -.C2 'u uacute -.C2 'y yacute -.C2 :A Adieresis "ウムラウト付き A" -.C2 :E Edieresis -.C2 :I Idieresis -.C2 :O Odieresis -.C2 :U Udieresis -.C2 :Y Ydieresis -.C2 :a adieresis -.C2 :e edieresis -.C2 :i idieresis -.C2 :o odieresis -.C2 :u udieresis -.C2 :y ydieresis -.C2 ^A Acircumflex -.C2 ^E Ecircumflex -.C2 ^I Icircumflex -.C2 ^O Ocircumflex -.C2 ^U Ucircumflex -.C2 ^a acircumflex -.C2 ^e ecircumflex -.C2 ^i icircumflex -.C2 ^o ocircumflex -.C2 ^u ucircumflex -.C2 `A Agrave -.C2 `E Egrave -.C2 `I Igrave -.C2 `O Ograve -.C2 `U Ugrave -.C2 `a agrave -.C2 `e egrave -.C2 `i igrave -.C2 `o ograve -.C2 `u ugrave -.C2 ~A Atilde -.C2 ~N Ntilde -.C2 ~O Otilde -.C2 ~a atilde -.C2 ~n ntilde -.C2 ~o otilde -.C2 vS Scaron -.C2 vs scaron -.C2 vZ Zcaron -.C2 vz zcaron -.C2 ,C Ccedilla -.C2 ,c ccedilla -.C2 /L Lslash "ポーランド語のスラッシュ付き L" -.C2 /l lslash "ポーランド語のスラッシュ付き l" -.C2 /O Oslash "スカンジナビア語のスラッシュ付き O" -.C2 /o oslash "スカンジナビア語のスラッシュ付き o" -.C2 oA Aring -.C2 oa aring +.2s Bq quotedblbase u201E "低い二重コンマ引用符" +.C2 bq quotesinglbase u201A "低い一重コンマ引用符" +.C2 lq quotedblleft u201C +.C2 rq quotedblright u201D +.C2 oq quoteleft u2018 "一重開き引用符" +.C2 cq quoteright u2019 "一重閉じ引用符" +.C2 aq quotesingle u0027 "アポストロフィ引用符 (ASCII 39)" +.C2 dq quotedbl u0022 "二重引用符 (ASCII 34)" +.C2 Fo guillemotleft u00AB +.C2 Fc guillemotright u00BB +.C2 fo guilsinglleft u2039 +.2e fc guilsinglright u203A +. +.Pa +.I 句読点 +.P +.2s r! exclamdown u00A1 +.C2 r? questiondown u00BF +.C2 em emdash u2014 "+" +.C2 en endash u2013 +.2e hy hyphen u2010 "+" . +.Pa +.I 括弧 .P -.I アクセント -.C2 a" hungarumlaut "ハンガリー語のウムラウト"\"" -.C2 a- macron "マクロン、バーアクセント" -.C2 a. dotaccent "ドットアクセント" -.C2 a^ circumflex "サーカムフレクスアクセント" -.C2 aa acute "アキュートアクセント" -.C2 ga grave "グレーブアクセント" -.C2 ab breve "ブリーブアクセント" -.C2 ac cedilla "セディラアクセント" -.C2 ad dieresis "ウムラウト、ダイエレシス" -.C2 ah caron "h\('a\(vcek アクセント" -.C2 ao ring "リングもしくはサークルアクセント" -.C2 a~ tilde "チルドアクセント" -.C2 ho ogonek "フックもしくはオゴネクアクセント" -.C2 ha asciicircum "\s-2ASCII\s+2 サーカムフレクス、ハット、キャレット" -.C2 ti asciitilde "\s-2ASCII\s0 チルド、大きいチルド" +拡張可能な括弧の断片はフォント不変のグリフです。 +. +古典的な troff では、垂直拡張角括弧、大括弧、および丸括弧の +1 つのグリフが利用可能でした: `bv'。 +. +我々は独断的にそれを u23AA にマップしています。 . .P -.I 引用符 -.C2 Bq quotedblbase "低い二重コンマ引用符" -.C2 bq quotesinglbase "低い一重コンマ引用符" -.C2 lq quotedblleft -.C2 rq quotedblright -.C2 oq quoteleft "一重開き引用符" -.C2 cq quoteright "一重閉じ引用符 (ASCII 39)" -.C2 aq quotesingle "アポストロフィ引用符" -.C2 dq quotedbl "二重引用符 (ASCII 34)" -.C2 Fo guillemotleft -.C2 Fc guillemotright -.C2 fo guilsinglleft -.C2 fc guilsinglright +すべてのデバイスがエスケープパイリング (重ね合わせ) +アルゴリズムの制限のため `\f(CW\eb\fP' で重ねることができる +拡張角括弧の断片を含まないことに注意してください。 +. +断片から角括弧を構築する一般的な解は以下のマクロです: . .P -.I 句読点 -.C2 r! exclamdown -.C2 r? questiondown -.C2 em emdash "全角 (M の幅の) ダッシュ" -.C2 en endash "半角 (n の幅の) ダッシュ" -.C2 hy hyphen +.nf +.RS +.ft C +\&.\e" 重ね合わせを上記の基準線の垂直 0.5em で +\&.\e" 中心とします。 +\&.\e" 最初の引数は先端に置かれます。 +\&.\e" 重ね合わせは文字列 `pile' を返します。 +\&.eo +\&.de pile-make +\&. nr pile-wd 0 +\&. nr pile-ht 0 +\&. ds pile-args +\&. +\&. nr pile-# \en[.$] +\&. while \en[pile-#] \e{\e +\&. nr pile-wd (\en[pile-wd] >? \ew'\e$[\en[pile-#]]') +\&. nr pile-ht +(\en[rst] - \en[rsb]) +\&. as pile-args \ev'\en[rsb]u'\e" +\&. as pile-args \eZ'\e$[\en[pile-#]]'\e" +\&. as pile-args \ev'-\en[rst]u'\e" +\&. nr pile-# -1 +\&. \e} +\&. +\&. ds pile \ev'(-0.5m + (\en[pile-ht]u / 2u))'\e" +\&. as pile \e*[pile-args]\e" +\&. as pile \ev'((\en[pile-ht]u / 2u) + 0.5m)'\e" +\&. as pile \eh'\en[pile-wd]u'\e" +\&.. +\&.ec +.ft +.RE +.fi . .P -.I 括弧 -.C2 lB bracketleft -.C2 rB bracketright -.C2 lC braceleft -.C2 rC braceright -.C2 la angleleft "始め山括弧" -.C2 ra angleright "終り山括弧" +別の複雑さは、オリジナルの troff で角括弧の断片を表すいくつかのグリフが +`フロア' 演算子を提供する、例えば、`lf' と `rf' という他の数学記号を +使うことができるという事実です。 +.\" fact that = (that 以下)という事実 +. +他のデバイス (最も顕著なものは DVI 出力) はそのようなグリフを一つにしません。 +. +そういうわけで、4 つのグリフ `lf'、`rf'、`lc' および `rc' は、 +同じように見える角括弧の断片で統一しません。 +.\" For this reason = こういう訳で、そういうわけで、従って、その限りでは、だからこそ、このため +.BR groff +では、長い名前がグリフだけが、(それらのグリフが存在しているなら) +すべてのデバイスのために正しく重なり合うように保証されます。 . .P +.CT "\fI出力" "\f(CW\e[bracketrightex]" "" "bracketrightex" "decomposed" +.He +.2s lB bracketleft u005B +.C2 rB bracketright u005D +.C2 lC braceleft u007B +.C2 rC braceright u007D +.C2 la angleleft u27E8 "左山括弧" +.C2 ra angleright u27E9 "右山括弧" +. +.C2 bv braceex u23AA "*** の垂直拡張 +" +.CN braceex braceex u23AA +. +.CN bracketlefttp bracketlefttp u23A1 +.CN bracketleftbt bracketleftbt u23A3 +.CN bracketleftex bracketleftex u23A2 +.CN bracketrighttp bracketrighttp u23A4 +.CN bracketrightbt bracketrightbt u23A6 +.CN bracketrightex bracketrightex u23A5 +. +.C2 lt bracelefttp u23A7 "+" +.CN bracelefttp bracelefttp u23A7 +.C2 lk braceleftmid u23A8 "+" +.CN braceleftmid braceleftmid u23A8 +.C2 lb braceleftbt u23A9 "+" +.CN braceleftbt braceleftbt u23A9 +.CN braceleftex braceleftex u23AA +.C2 rt bracerighttp u23AB "+" +.CN bracerighttp bracerighttp u23AB +.C2 rk bracerightmid u23AC "+" +.CN bracerightmid bracerightmid u23AC +.C2 rb bracerightbt u23AD "+" +.CN bracerightbt bracerightbt u23AD +.CN bracerightex bracerightex u23AA +. +.CN parenlefttp parenlefttp u239B +.CN parenleftbt parenleftbt u239D +.CN parenleftex parenleftex u239C +.CN parenrighttp parenrighttp u239E +.CN parenrightbt parenrightbt u23A0 +.Ne parenrightex parenrightex u239F +. +.Pa .I 矢印 -.C2 <- arrowleft -.C2 -> arrowright -.C2 <> arrowboth "左右向き矢印" -.C2 da arrowdown -.C2 ua arrowup -.C2 va arrowupdn "上下向き矢印" -.C2 lA arrowdblleft -.C2 rA arrowdblright -.C2 hA arrowdblboth "左右向き二重矢印" -.C2 dA arrowdbldown -.C2 uA arrowdblup -.C2 vA \& "上下向き二重矢印" -.C2 an arrowhorizex "水平な矢印の延長" -. .P +.2s <- arrowleft u2190 "+" +.C2 -> arrowright u2192 "+" +.C2 <> arrowboth u2194 "(水平)" +.C2 da arrowdown u2193 "+" +.C2 ua arrowup u2191 "+" +.C2 va arrowupdn u2195 +.C2 lA arrowdblleft u21D0 +.C2 rA arrowdblright u21D2 +.C2 hA arrowdblboth u21D4 "(水平)" +.C2 dA arrowdbldown u21D3 +.C2 uA arrowdblup u21D1 +.C2 vA uni21D5 u21D5 "垂直二重頭の二重矢印 +.\" "vertical double-headed double arrow" +.2e an arrowhorizex u23AF "水平な矢印の延長" +. +.Pa .I 線 -.C2 -h hbar -.C2 or bar -.C2 ba bar -.C2 br br "従来の troff で利用された箱罫線" -.C2 ru ru "ベースラインの罫線" -.C2 ul ul "従来の troff で利用された下線" -.C2 bv bv "縦棒" -.C2 bb brokenbar -.C2 sl slash -.C2 rs backslash +.P +フォント不変のグリフ `br'、`ul' および `rn' は角 (コーナ) を形づくります。 +それらは箱 (ボックス) を作るのに使用できます。 +. +PostScript とこれらの 3 つのグリフの Unicode 派生名の両方は +ただおおまかに似たものであることに注意してください。 +.\" rough approximation = おおまかに似たもの、概算、大ざっぱな数字 . .P -.I テキストマーカ -.C2 ci circle -.C2 bu bullet -.C2 dd daggerdbl "ダブルダガーサイン" -.C2 dg dagger -.C2 lz lozenge -.C2 sq square -.C2 ps paragraph -.C2 sc section -.C2 lh handleft -.C2 rh handright -.C2 at at -.C2 sh numbersign -.C2 CR carriagereturn "改行の記号" -.C2 OK a19 "チェックマーク、照合のしるし" +また、`rn' は古典的な troff で平方根記号の水平な拡張としての役割があります。 . .P -.I 法律関連 -.C2 co copyright -.C2 rg registered -.C2 tm trademark -.C2 bs bell "AT&T Bell Labs ロゴ (groff では使われません)" +`ru' はフォント不変のグリフ、すなわち、長さ 0.5m の罫線です。 . .P -.I 通貨記号 -.C2 Do dollar -.C2 ct cent -.C2 eu \& "公式なユーロ記号" -.C2 Eu Euro "フォント依存のユーログリフバリアント" -.C2 Ye yen -.C2 Po sterling "英国の通貨記号" -.C2 Cs currency "スカンジナビアの通貨記号" -.C2 Fn florin "オランダの通貨記号" +.CT "出力" "\f(CW\e[integral]" "" "propersuperset" "xxxxxxxxx" +.He +.2s ba bar u007C +.C2 br SF110000 u2502 "箱型罫線 +" +.C2 ul underscore u005F "+" +.C2 rn overline u203E "平方根の継続には `\f(CW\e[radicalex]\fP' を使用 +" +.C2 ru --- --- "ベースラインの罫線 +" +.C2 bb brokenbar u00A6 +.C2 sl slash u002F "+" +.2e rs backslash u005C "逆固相線" +. +.Pa +.I テキストマーカ +.P +.2s ci circle u25CB "+" +.C2 bu bullet u2022 "+" +.C2 dd daggerdbl u2021 "ダブルダガーサイン +" +.C2 dg dagger u2020 "+" +.C2 lz lozenge u25CA +.C2 sq uni25A1 u25A1 "白い方形 +" +.C2 ps paragraph u00B6 +.C2 sc section u00A7 "+" +.C2 lh uni261C u261C "左手指し +" +.C2 rh a14 u261E "右手指し +" +.C2 at at u0040 +.C2 sh numbersign u0023 +.C2 CR carriagereturn u21B5 +.2e OK a19 u2713 "チェックマーク、tick" +. +.Pa +.I 法律関連 +.P +.2s co copyright u00A9 "+" +.C2 rg registered u00AE "+" +.C2 tm trademark u2122 +.2e bs --- --- "AT&T ベル研究所ロゴ (groff では使用されない) +" . +.Pa +.I 通貨記号 .P +.2s Do dollar u0024 +.C2 ct cent u00A2 "+" +.C2 eu --- u20AC "公式なユーロ記号" +.C2 Eu Euro u20AC "フォント依存のユーログリフバリアント" +.C2 Ye yen u00A5 +.C2 Po sterling u00A3 "英国の通貨記号" +.C2 Cs currency u00A4 "スカンジナビアの通貨記号" +.2e Fn florin u0192 "オランダの通貨記号" +. +.Pa .I 単位 -.C2 de degree -.C2 %0 perthousand "千分の一記号、パーミル" -.C2 fm minute "フィート記号、プライム" -.C2 sd second -.C2 mc mu "マイクロ記号" -.C2 Of ordfeminine -.C2 Om ordmasculine -. .P +.2s de degree u00B0 "+" +.C2 %0 perthousand u2030 "千単位記号、千年単位記号" +.C2 fm minute u2032 "フットマーク, プライム +" +.C2 sd second u2033 +.C2 mc mu u00B5 "マイクロ記号" +.C2 Of ordfeminine u00AA +.2e Om ordmasculine u00BA +. +.Pa .I 論理シンボル -.C2 AN logicaland -.C2 OR logicalor -.C2 no logicalnot -.C2 te existential "存在する、存在限定子" -.C2 fa universal "すべての、普通限定子" -.C2 st suchthat -.C2 3d therefore -.C2 tf therefore -. .P +.2s AN logicaland u2227 +.C2 OR logicalor u2228 +.C2 no logicalnot u00AC "+" +.CN tno logicalnot u00AC "`no' のテキスト形" +.C2 te existential u2203 "存在する、存在限定子" +.C2 fa universal u2200 "すべての、普通限定子" +.C2 st suchthat u220B +.C2 3d therefore u2234 +.C2 tf therefore u2234 +. +.2e or bar u007C "(C で使われるような) ビット単位の OR 演算子 +" +. +.Pa .I 数学シンボル -.C2 12 onehalf -.C2 14 onequarter -.C2 34 threequarters -.C2 S1 onesuperior -.C2 S2 twosuperior -.C2 S3 threesuperior -. -.C2 pl plusmath "特殊フォントの正符号" -.C1 - minus "現在のフォントの負符号" -.C2 -+ minusplus -.C2 +- plusminus -.CN t+- plusminus "テキストバリアントの `+-'" -.C2 pc periodcentered "乗算記号のドット" -.C2 md dotmath -.C2 mu multiply -.CN tmu multiply "テキストバリアントの `mu'" -.C2 c* circlemultiply "円の中に積の記号" -.C2 c+ circleplus "円の中に正符号" -.C2 di divide "除算記号" -.CN tdi divide "テキストバージョンの `di'" -.C2 f/ fraction "除算の棒" -.C2 ** asteriskmath -. -.C2 <= lessequal -.C2 >= greaterequal -.C2 << \& "非常に小さい" -.C2 >> \& "非常に大きい" -.C2 != notequal -.C2 eq equalmath "特殊フォントの等号" -.C2 == equivalence -.C2 =~ congruent -.C2 ap similar -.C2 ~~ approxequal -.C2 ~= approxequal -.C2 pt proportional -. -.C2 es emptyset -.C2 mo element -.C2 nm notelement -.C2 nb notsubset -.C2 nc notpropersuperset -.C2 ne notequivalence -.C2 sb propersubset -.C2 sp propersuperset -.C2 ib reflexsubset -.C2 ip reflexsuperset -.C2 ca intersection "共通集合、キャップ" -.C2 cu union "合併集合、カップ" -. -.C2 /_ angle -.C2 pp perpendicular -.C2 is integral -.CN sum sum -.CN product product -.C2 gr gradient -.C2 sr radical "根号 (square root)" -.C2 rn \& overline "根号の続き" -. -.C2 if infinity -.C2 Ah aleph -.C2 Im Ifraktur "フラクトゥール(ドイツ字体) I, 虚数" -.C2 Re Rfraktur "フラクトゥール(ドイツ字体) R, 実数" -.C2 wp weierstrass "ヴァイヤーシュトラースの p" -.C2 pd partialdiff "偏微分記号" -. .P +.2s 12 onehalf u00BD "+" +.C2 14 onequarter u00BC "+" +.C2 34 threequarters u00BE "+" +.C2 18 oneeighth u215B +.C2 38 threeeighths u215C +.C2 58 fiveeighths u215D +.C2 78 seveneighths u215E +.C2 S1 onesuperior u00B9 +.C2 S2 twosuperior u00B2 +.C2 S3 threesuperior u00B3 +. +.C2 pl plus u002B "特殊フォントの正符号 +" +.C2 mi minus u2212 "特殊フォントの負符号 +" +.C2 -+ uni2213 u2213 +.C2 +- plusminus u00B1 "+" +.CN t+- plusminus u00B1 "`+\-' のテキスト形" +.C2 pc periodcentered u00B7 +.C2 md dotmath u22C5 "乗算のドット" +.C2 mu multiply u00D7 "+" +.CN tmu multiply u00D7 "`mu' のテキスト形" +.C2 c* circlemultiply u2297 "円の中に積の記号" +.C2 c+ circleplus u2295 "円の中に正符号" +.C2 di divide u00F7 "除算記号 +" +.CN tdi divide u00F7 "`di' のテキスト形" +.C2 f/ fraction u2044 "分数の棒" +.C2 ** asteriskmath u2217 "+" +. +.C2 <= lessequal u2264 "+" +.C2 >= greaterequal u2265 "+" +.C2 << uni226A u226A "より小さい" +.C2 >> uni226B u226B "より大きい" +.C2 eq equal u003D "特殊フォントの等号 +" +.C2 != notequal u003D_0338 "+" +.C2 == equivalence u2261 "+" +.C2 ne uni2262 u2261_0338 +.C2 =~ congruent u2245 "近似等号" +.C2 |= uni2243 u2243 "漸近等号 +" +.C2 ap similar u223C "+" +.C2 ~~ approxequal u2248 "ほぼ等号" +.C2 ~= approxequal u2248 +.C2 pt proportional u221D "+" +. +.C2 es emptyset u2205 "+" +.C2 mo element u2208 "+" +.C2 nm notelement u2208_0338 +.C2 sb propersubset u2282 "+" +.C2 nb notsubset u2282_0338 +.C2 sp propersuperset u2283 "+" +.C2 nc uni2285 u2283_0338 "スーパーセットでない" +.C2 ib reflexsubset u2286 "+" +.C2 ip reflexsuperset u2287 "+" +.C2 ca intersection u2229 "共通集合, キャップ +" +.C2 cu union u222A "合併集合, カップ +" +. +.C2 /_ angle u2220 +.C2 pp perpendicular u22A5 +.C2 is integral u222B "+" +.CN integral integral u222B "***" +.CN sum summation u2211 "***" +.CN product product u220F "***" +.C2 gr gradient u2207 "+" +.C2 sr radical u221A "平方根 +" +.CN sqrt radical u221A "***" +.CN radicalex radicalex --- "平方根の継続" +.CN sqrtex radicalex --- "***" +. +.C2 lc uni2308 u2308 "左シーリング +" +.C2 rc uni2309 u2309 "右シーリング +" +.C2 lf uni230A u230A "左フロア +" +.C2 rf uni230B u230B "右フロア +" +. +.C2 if infinity u221E "+" +.C2 Ah aleph u2135 +.C2 Im Ifraktur u2111 "ゴシック体 I, 虚数" +.C2 Re Rfraktur u211C "ゴシック体 R, 実数" +.C2 wp weierstrass u2118 "ワイエルシュトラスの p" +.C2 pd partialdiff u2202 "偏微分記号 +" +.\" partial differentiation = 偏微分 +.C2 -h uni210F u210F "2 パイのプランク定数" +.\" Planck constant = プランク定数 +.2e hbar uni210F u210F +. +.Pa .I ギリシャ文字 -.C2 *A Alpha -.C2 *B Beta -.C2 *C Xi -.C2 *D Delta -.C2 *E Epsilon -.C2 *F Phi -.C2 *G Gamma -.C2 *H Theta -.C2 *I Iota -.C2 *K Kappa -.C2 *L Lambda -.C2 *M Mu -.C2 *N Nu -.C2 *O Omicron -.C2 *P Pi -.C2 *Q Psi -.C2 *R Rho -.C2 *S Sigma -.C2 *T Tau -.C2 *U Upsilon -.C2 *W Omega -.C2 *X Chi -.C2 *Y Eta -.C2 *Z Zeta -.C2 *a alpha -.C2 *b beta -.C2 *c xi -.C2 *d delta -.C2 *e epsilon -.C2 *f phi -.C2 +f phi1 "ファイ変形" -.C2 *g gamma -.C2 *h theta -.C2 +h theta1 "シータ変形" -.C2 *i iota -.C2 *k kappa -.C2 *l lambda -.C2 *m mu -.C2 *n nu -.C2 *o omicron -.C2 *p pi -.C2 +p omega1 "パイ変形、オメガ風" -.C2 *q psi -.C2 *r rho -.C2 *s sigma -.C2 *t tau -.C2 *u upsilon -.C2 *w omega -.C2 *x chi -.C2 *y eta -.C2 *z zeta -.C2 ts sigma1 "語尾小文字σ" +.P +これらのグリフは技術的な使用のためであり、本当のギリシア語のために +意図されていません。 +通常、大文字には直立形があり、そして小文字のものは傾斜しています。 +. +Unicode への文字 phi のマッピングに関する問題があります。 +. +Unicode バージョン\ 3.0 の前に、U+03C6、GREEK SMALL LETTER PHI と +U+03D5、GREEK PHI SYMBOL の違いは明確に説明されていません。 +Unicode 本のグリフ形は参照として使用することしかできませんでした。 . +Unicode\ 3.0 から始まって、参照グリフは交換して、言葉で説明されました: +数学の文脈では、U+03D5 は撫で形グリフで、U+03C5 はちじれグリフです。 +. +残念ながら、ほとんどのフォント業者は +Unicode におけるこの (非互換) の変更で +それらのフォントを更新しませんでした。 +. +これを書いた (2003 年 2 月) 時点で、 +数学で使用されるなら Adobe Glyph Names `phi' と `phi1' +が意味を変更するかどうかはまだ明確ではありません。 +したがって、互換性の問題は起こりそうです \(en +保守的ですが、groff は、現在 PostScript シンボルフォントの `phi' が +撫で形バージョンであると仮定しています .P +groff では、シンボル `\f(CW\e[*f]\fP' は常に phi の撫で形バージョンを意味して、 +`\f(CW\e[+f]\fP' はちじれ異形を意味します。 +.P +.2s *A Alpha u0391 "+" +.C2 *B Beta u0392 "+" +.C2 *G Gamma u0393 "+" +.C2 *D Delta u0394 "+" +.C2 *E Epsilon u0395 "+" +.C2 *Z Zeta u0396 "+" +.C2 *Y Eta u0397 "+" +.C2 *H Theta u0398 "+" +.C2 *I Iota u0399 "+" +.C2 *K Kappa u039A "+" +.C2 *L Lambda u039B "+" +.C2 *M Mu u039C "+" +.C2 *N Nu u039D "+" +.C2 *C Xi u039E "+" +.C2 *O Omicron u039F "+" +.C2 *P Pi u03A0 "+" +.C2 *R Rho u03A1 "+" +.C2 *S Sigma u03A3 "+" +.C2 *T Tau u03A4 "+" +.C2 *U Upsilon u03A5 "+" +.C2 *F Phi u03A6 "+" +.C2 *X Chi u03A7 "+" +.C2 *Q Psi u03A8 "+" +.C2 *W Omega u03A9 "+" +.C2 *a alpha u03B1 "+" +.C2 *b beta u03B2 "+" +.C2 *g gamma u03B3 "+" +.C2 *d delta u03B4 "+" +.C2 *e epsilon u03B5 "+" +.C2 *z zeta u03B6 "+" +.C2 *y eta u03B7 "+" +.C2 *h theta u03B8 "+" +.C2 *i iota u03B9 "+" +.C2 *k kappa u03BA "+" +.C2 *l lambda u03BB "+" +.C2 *m mu u03BC "+" +.C2 *n nu u03BD "+" +.C2 *c xi u03BE "+" +.C2 *o omicron u03BF "+" +.C2 *p pi u03C0 "+" +.C2 *r rho u03C1 "+" +.C2 ts sigma1 u03C2 "終端シグマ (sigma) +" +.C2 *s sigma u03C3 "+" +.C2 *t tau u03C4 "+" +.C2 *u upsilon u03C5 "+" +.C2 *f phi u03D5 "(撫で形のグリフ) +" +.C2 *x chi u03C7 "+" +.C2 *q psi u03C8 "+" +.C2 *w omega u03C9 "+" +.C2 +h theta1 u03D1 "異形シータ (theta)" +.C2 +f phi1 u03C6 "異形 phi (ちじれ形)" +.C2 +p omega1 u03D6 "異形パイ (pi), オメガ (omega) 似" +.2e +e uni03F5 u03F5 "異形 epsilon" +. +.Pa .I カードシンボル -.C2 CL club "クラブスート" -.C2 SP spade "スペードスート" -.C2 HE heart "ハートスート" -.C2 DI diamond "ダイヤスート" -.ch Fo +.P +.2s CL club u2663 "黒のクラブ" +.C2 SP spade u2660 "黒のスペード" +.C2 HE heart u2665 "黒のハート " +.C2 u2662 uni2662 u2662 "白のハート" +.C2 DI diamond u2666 "黒のダイアモンド" +.2e u2661 uni2661 u2661 "白のダイアモンド" . . .\" -------------------------------------------------------------------- .SH "作者" .\" -------------------------------------------------------------------- . -Copyright \(co 1989-2000, 2001, 2002 Free Software Foundation, Inc. +Copyright \(co 1989-2000, 2001, 2002, 2003 Free Software Foundation, Inc. . .P この文書は、FDL (GNU Free Documentation License) バージョン 1.1 か それ以降のものに基づいて配布されています。 . あなたは、このパッケージとともに FDL のコピーを受け取っているはずですが、 これは .ie \n(.g \ . URL http://\:www.gnu.org/\:copyleft/\:fdl.html "GNU のコピーレフトのサイト" .el GNU のコピーレフトのサイト からもオンラインで入手可能です。 . .P この文書は GNU の roff ディストリビューションである .IR groff の一部です。 . この文書は .ie \n(.g \ . MTO jjc@jclark.com "James Clark" .el James Clark が書き、 .ie \n(.g \ . MTO wl@gnu.org "Werner Lemberg" .el Werner Lemberg と .ie \n(.g \ . MTO bwarken@mayn.de "Bernd Warken" . .el Bernd Warken . が追加しました。 . . .\" -------------------------------------------------------------------- .SH "関連項目" .\" -------------------------------------------------------------------- . .TP .BR groff (1) GNU roff フォーマッタ。 . .TP .BR groff (7) groff 清書言語の短かい参考書。 . . .P .IR "An extension to the troff character set for Europe" , E.G. Keizer, K.J. Simonsen, J. Akkerhuis; EUUG Newsletter, Volume 9, No. 2, Summer 1989 . . .P .ie \n(.g .URL http://\:www.unicode.org "The Unicode Standard" .el The Unicode Standard . .\" -------------------------------------------------------------------- .\" Emacs settings .\" -------------------------------------------------------------------- .\" Local Variables: .\" mode: nroff .\" End: diff --git a/ja_JP.eucJP/man/man7/groff_mdoc.7 b/ja_JP.eucJP/man/man7/groff_mdoc.7 index 441af26f94..43bf51075b 100644 --- a/ja_JP.eucJP/man/man7/groff_mdoc.7 +++ b/ja_JP.eucJP/man/man7/groff_mdoc.7 @@ -1,4231 +1,4276 @@ .\" groff_mdoc.man .\" .\" A complete reference of the mdoc macro package for GNU troff. .\" .\" Based on NetBSD's mdoc.samples.7, version 1.21. .\" .\" .\" Warning: You can't format this file with the old mdoc macros! .\" .\" .\" Copyright (c) 1990, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)mdoc.samples.7 8.2 (Berkeley) 12/30/93 .\" .\" This reference invokes every macro in the package several .\" times and is guaranteed to give a worst case performance .\" for an already extremely slow package. .\" .\" $FreeBSD$ .\" Copyright (c) 2001 FreeBSD jpman project .\" This is for Japanese translation done by FreeBSD jpman project. .\" WORD: epoch 基準時点 (協定世界時 1970年1月1日 00:00:00) .\" WORD: display ディスプレイ .\" WORD: bracket 角括弧 [] .\" WORD: brace 中括弧 () .\" WORD: angle bracket 山括弧 <> .\" WORD: acronym 頭字語 .\" WORD: keep キープ .\" WORD: literal リテラル .\" WORD: content macro コンテントマクロ .\" WORD: command modifier コマンド修飾子 .\" WORD: enclosure 囲い .\" WORD: quoting クォート .\" WORD: nest 入れ子 .\" WORD: block ragged 凹凸ブロック .\" WORD: constant width character 定幅文字 .\" WORD: scale indicator スケール指示子 .\" WORD: hanging tag ぶら下がりタグ .\" WORD: overhanging tag オーバハングタグ .\" WORD: parsed 構文解析される .\" WORD: callable 呼び出し可能 . .Dd July 8, 2004 .Os .Dt GROFF_MDOC 7 . . .Sh 名称 . .Nm groff_mdoc .Nd groff mdoc の実装に関するリファレンス . . .Sh 書式 . .Nm groff Fl m Ns Cm doc Ar . . .Sh 解説 . .Tn GNU .Xr troff 1 用の .Em コンテントベース でかつ .Em 領域ベース な整形用パッケージである .Nm \-mdoc マクロパッケージを使って .Ux マニュアルページを書くための完全なリファレンスです。 前身である .Xr \-man 7 パッケージは、フォントの操作や他の写植方法の詳細は個々の作者に任せ、 ページのレイアウトを取り扱ってきました。 .Nm \-mdoc では、ページレイアウトマクロは タイトル、セクションのヘッダ、ディスプレイ、リストのマクロからなる .Em "ページ構造領域" -を形成しています。本質的にこれらの要素は整形されたページにおける +を形成しています。 +本質的にこれらの要素は整形されたページにおける テキストの物理的位置に影響を与えます。 ページ構造領域に加え、さらに .Em マニュアル 領域および .Em 一般 テキスト領域の 2 つの領域があります。 一般テキスト領域は、テキストの一部をクォートしたり強調したりと いったような作業を実行するマクロとして定義されています。 マニュアル領域はコマンドやルーチン、それに .Ux の関連ファイルを記述するための日常使用されるインフォーマルな言葉の サブセットであるマクロとして定義されています。 マニュアル領域のマクロはコマンド名、コマンド行の引数とオプション、 関数名、関数のパラメータ、パス名、変数名、他のマニュアルページへの クロスリファレンスなどを扱います。 これらの領域の項目は作者とマニュアルページの将来のユーザの両者に とって価値のあるものです。 マニュアル間で一貫性を高めることによって将来のドキュメントツールへの 移行が容易になることが期待されます。 .Pp .Ux マニュアルページ全体を通して、マニュアルのエントリは単純に マニュアルページ (a man page) とみなされます。 これは実際のページ数と関係ありませんし、性差別をする意図もありません。 .\" 訳注: a man page -- 1 ページ (a page) と男 (man) の意味 . . .Sh "さあ、始めよう" . このドキュメントの残りの部分で説明されている題材は以下のような構成に なっています。 . .Bl -enum -width 3n -offset indent . It . Tn "TROFF に特有な表現" . . Bl -tag -width 2n -compact -. It "マクロの使用方法" +. It "マクロの使用方法" . It "引数に空白文字を指定する" . It "行末の空白文字" . It "特殊文字のエスケープ" . It "その他の注意点" . El . . It . Tn "マニュアルページのテンプレート" . . It . Tn "使用法" . . It . Tn "タイトルマクロ" . . It . Tn "マニュアル領域および一般テキスト領域の紹介" . . Bl -tag -width 2n -compact . It "この名前には何が" Ns ... . It "一般的な構文" . El . . It . Tn "マニュアル領域" . . Bl -tag -width 2n -compact . It "アドレス" . It "作者名" . It "引数" . It "コンフィギュレーション宣言 (セクション 4 のみ)" . It "コマンド修飾子" . It "定義済みの変数" . It "errno (セクション 2 のみ)" . It "環境変数" . It "フラグ" . It "関数の宣言" . It "関数の型" . It "関数 (ライブラリルーチン)" . It "関数の引数" . It "戻り値" . It "終了ステータス" . \" .It "ヘッダファイル (ソースコードを含む)" . It "対話的なコマンド" . It "ライブラリ名" . It "リテラル" . It "名称" . It "オプション" . It "パス名" . It "標準" . It "変数の型" . It "変数" . It "マニュアルページのクロスリファレンス" . El . . It . Tn "一般テキスト領域" . . Bl -tag -width 2n -compact . It "AT&T マクロ" . It "BSD マクロ" . It "NetBSD マクロ" . It "FreeBSD マクロ" . It "OpenBSD マクロ" . It "BSD/OS マクロ" . It "UNIX マクロ" . It "強調マクロ" . It "フォントモード" . It "囲い/クォート マクロ" . It "無操作もしくは通常テキストマクロ" . It "空白なしマクロ" . It "セクションのクロスリファレンス" . It "記号" . It "数式記号" . It "参考文献と引用" . It "商標名 (頭字語とタイプ名)" . It "拡張引数" . El . . It . Tn "ページ構造領域" . . Bl -tag -width 2n -compact . It "セクションヘッダ" . It "サブセクションヘッダ" . It "段落と行スペース" . It "キープ" . It "例示とディスプレイ" . It "リストとカラム" . El . . It . Tn "その他のマクロ" . . It . Tn "定義済みの文字列" . . It . Tn "診断" . . It . Tn "GROFF, TROFF および NROFF を使用した整形" . . It . Tn "関連ファイル" . . It . Tn "関連項目" . . It . Tn "バグ" .El . .\" XXX .if t \ . ne 7 . . .Sh "TROFF に特有な表現" . .Nm \-mdoc パッケージは、マニュアルページを記述するプロセスを簡単にすることを 目的としています。 .Nm \-mdoc を使うために .Tn GNU .Xr troff 1 のゴタゴタした詳細を学ぶ必要がないのが理想ですが、 いくつか片付けるべき避けられない制限事項があります。 また、このパッケージは高速で .Em ない ということも予め警告しておきます。 . .Ss "マクロの使用方法" . .Tn GNU .Xr troff 1 のように、マクロは .Ql .\& (ドット) を行頭に置き、それに続けて 2 文字 (または 3 文字) からなる マクロの名称を指定することによって呼び出されます。 ドットとマクロの間にはスペースかタブを置くことができます。 引数はマクロの後にスペースで区切って指定することができます (タブは使用 .Em できません ) 。 行頭にドットを指定することによって .Tn GNU .Xr troff 1 にそれに続く 2 文字 (あるいはそれより多い文字) を マクロ名として解釈するよう指示しています。 最初にドット 1 文字をとり、その後ろに何も来ない場合は 無視されます。 マクロを起動させたくないような文脈で、入力行の先頭に .Ql .\& (ドット) を置くためには、 .Ql .\& (ドット) の前にエスケープシーケンス .Ql \e& を指定します。 .Ql \e& は文字通りスペース幅が 0 として解釈され、出力には現れません。 .Pp 一般的に .Tn GNU .Xr troff 1 マクロは取り得る引数の数に制限はありません (9 つ以上の 引数を扱うことのできない他のバージョンの troff とは違います)。 限られた場合ではありますが、引数を次の行に続けたり、拡張したり することができます (後述の .Sx 拡張引数 のセクションを参照)。 ほとんどすべてのマクロで引用符に囲まれた引数を扱うことができます (後述の .Sx 引数に空白文字を指定する のセクションを参照)。 .Pp .Nm \-mdoc での一般テキスト領域とマニュアル領域のほとんどのマクロは、 呼び出し可能なマクロ名を決定するためにその引数のリストが .Em 構文解析 されるという点で特別なものです。 これはつまり、一般テキスト領域またはマニュアル領域のマクロ名に一致し (かつ、呼び出し可能であると定義された) 引数リスト中の引数は、 処理される時に実行されるか、もしくは呼び出されるということです。 この場合、引数がマクロの名前であっても .Ql .\& (ドット) で前置されません。 このようにしてたくさんのマクロを入れ子にすることができます。 例えばオプションマクロ .Ql .Op はフラグマクロおよび引数マクロ .Ql \&Fl と .Ql \&Ar を .Em 呼び出し て、オプションのフラグを引数とともに指定することができます: . .Bl -tag -width ".Op Fl s Ar bytes" -offset indent .It Op Fl s Ar bytes は .Ql ".Op Fl s Ar bytes" で生成されます。 .El . .Pp 文字列がマクロ名と解釈されないようにするには、 その文字列の前にエスケープシーケンス .Ql \e& を指定します。 . .Bl -tag -width ".Op \&Fl s \&Ar bytes" -offset indent .It Op \&Fl s \&Ar bytes は .Ql ".Op \e&Fl s \e&Ar bytes" で生成されます。 .El . .Pp ここで文字列 .Ql \&Fl と .Ql \&Ar はマクロとして解釈されていません。 このドキュメントを通じて、 呼び出し可能な引数を調べるために引数リストが構文解析されるマクロは .Em 構文解析される マクロとして参照し、 引数リストから呼び出されることができるマクロは .Em 呼び出し可能 なマクロとして参照します。 .Nm \-mdoc のマクロはほとんどすべてが構文解析されるのですから、これは技術的には .Em 適当でない 表現ですが、常にマクロを「呼び出し可能である」とか「他のマクロを 呼び出すことができる」と表現するのは面倒なことであるため、 「構文解析される」という用語を使います。 . .Pp 以降、この区別が必要な場合、行頭 (でドットで開始する) .Nm \-mdoc マクロを .Em コマンド と呼びます。 . .Ss "引数に空白文字を指定する" . 1 つ以上の空白文字を含む文字列を引数として指定したい 場合があります。 引数リスト中の要素が特定の並びをしていることを 期待しているコマンドに引数を指定する時に必要になることがあります。 さらに、こうすると .Nm \-mdoc が速く実行されるようになるのです。 例えば、関数コマンド .Ql .Fn では第 1 引数は関数名であり、残りの引数が関数のパラメータであると 想定されています。 .Tn ANSI\~C では、関数のパラメータ宣言を括弧で囲まれたパラメータリスト中に 明示することを規定しているので、 各パラメータは最低でも 2 語の文字列となります。 例えば、 .Fa int foo のようになります。 .Pp 空白を含む引数を指定するには 2 通りの方法があります。 1 つは、空白を含む文字列を渡すのに、固定の空白、 つまりパディングされない空白文字 .Ql \e\ -を使う方法です。すなわち、空白の前にエスケープ文字 +を使う方法です。 +すなわち、空白の前にエスケープ文字 .Ql \e を指定します。 この方法はどのマクロでも使うことができますが、1 行が長くなり過ぎた テキストを調整するときの邪魔になるという副作用があります。 .Xr troff では、固定の空白は他の印刷可能な文字と同様に扱われ、通常期待されるように その箇所で文字列を空白や改行で分けることは行われなくなります。 この方法は文字列が行の境界にまたがることが好ましくない場合に有用です。 代替案としては、 パディング可能 (すなわち伸長可能) で分割不可能な空白 -.Ql \e~ +.Ql \e~ を使うことがあります (これは、 .Tn GNU .Xr troff 1 拡張です)。 2 つ目の方法は、文字列をダブルクォートで括ることです。 .Pp 例えば、次のようにします: . .Bl -tag -width ".Fn fetch char\ *str" -offset indent .It Fn fetch char\ *str は .Ql ".Fn fetch char\e *str" で生成されます。 .It Fn fetch "char *str" -も +は、また .Ql ".Fn fetch \*[q]char *str\*[q]" -で生成することができます。 +でも生成することができます。 .El . .Pp もし、最初の例の空白の前もしくは次の例のダブルクォートの前の .Ql \e が省略されていた場合には .Ql .Fn は引数が 3 つであるとみなし、その結果は .Pp .Dl Fn fetch char *str .Pp となります。 .\" For an example of what happens when the parameter list overlaps a newline .\" boundary, see the .\" .Sx BUGS .\" section. . .Ss "行末の空白文字" . -.Xr Troff +.Xr troff は行末に空白文字があると混乱してしまうことがあります。 .Ao 空白 Ac Ns Ao 行末 Ac の文字の並びからすべての空白文字を取り除くのは良い予防策です。 どうしても行末に空白文字をおく必要性が出てきた場合は、 パディングされない空白とエスケープ文字 .Ql \e& を使用することによって対応できます。 例えば、 .Ql string\e\ \e& のようにします。 . .Ss "特殊文字のエスケープ" . 改行 .Ql \en のような特殊文字は、バックスラッシュを保存するために .Ql \e を .Ql \ee で置き換え (たとえば .Ql \een とする) て扱います。 . .Ss "その他の注意点" . 表示領域外で空の入力行が見つかった場合には警告が発生します (後述)。 代わりに .Ql .sp を使用してください -( -.Nm \-mdoc +.Pf ( Nm \-mdoc マクロを使用して、低レベルコマンドを使用しないようにすると ずっと良いです)。 .Pp 先頭に空白を置くと行分割が生じ、そのまま出力されてしまいます。 可能ならばこうなることを避けてください。 同様に、通常のテキスト行において単語間に 2 つ以上の空白文字を -使用しないでください。これは、他のテキストフォーマッタとは -対照的です。空白文字を 2 つ以上置いても 1 つの空白文字に -.Em 置き換わりません +使用しないでください。 +これは、他のテキストフォーマッタとは対照的です。 +空白文字を 2 つ以上置いても 1 つの空白文字に置き換わり +.Em ません 。 .Pp 引数として .Ql \*[q] を直接渡すことはできません。 代わりに .Ql \e*[q] (あるいは .Ql \e*q ) を使用してください。 .Pp デフォルトでは、 .Xr troff 1 は文を終了させる句読点の後に空白文字を 2 つ挿入します。 つまり、 .Ql \&) あるいは .Ql \&' などの文字はそのまま扱われ、文の終了には影響を与えません。 この動作を変更するには、 ドットの前あるいは後に .Ql \e& を挿入してください。 . .Bd -literal -offset indent The \&.Ql . character. \&.Pp The \&.Ql \e&. character. \&.Pp \&.No test . test \&.Pp \&.No test. test .Ed .Pp . は、 . .Bd -filled -offset indent The .Ql . character. .Pp The .Ql \&. character. .Pp .No test . test .Pp .No test. test .Ed -.Pp +.\" 次の .sp は翻訳で追加。 +.sp となります。 .Pp . 1 行目および 3 行目にみられるように、 .Nm \-mdoc はマクロ引数の中では句読点を特別に扱います。 これについては、後述の .Sx 一般的な構文 の節で述べます。 同様の方法で、幅 0 の空白を続けることで、 省略形の後に続いたピリオドを保護しなくてはなりません。 例えば .Ql e.g.\e& のようにします。 .Pp マニュアルページのソースファイル中のコメントは、 独立した行では .Ql .\e" 、何らかの入力があった後では .Ql \e" を、あるいはどのような場所でも使いたい場合は .Ql \e# を使うことができます (後者は .Tn GNU .Xr troff 1 -拡張です)。このような行の残りの部分は無視されます。 +拡張です)。 +このような行の残りの部分は無視されます。 . . .Sh "マニュアルページのテンプレート" . マニュアルページの中身は次のような基本的なテンプレートから 簡単に作成できます。 . .Bd -literal -offset indent \&.\e" 以下のコマンドはすべてのマニュアルページで必要な項目です。 \&.Dd 月 日, 年 \&.Os [オペレーティングシステム] [バージョン/リリース] \&.Dt ドキュメントタイトル [セクション番号] [アーキテクチャ/ボリューム] \&.Sh NAME \&.Nm 名称 \&.Nd 名称についての 1 行での説明 \&.\e" 次のコマンドはセクション 2, 3 でのみ必要なものです。 \&.\e" .Sh LIBRARY \&.Sh SYNOPSIS \&.Sh DESCRIPTION -\&.\e" 以下のコマンドについては、必要に応じてコメントをはずして使用してく -\&.\e" ださい。 +\&.\e" 以下のコマンドについては、必要に応じてコメントをはずして使用して +\&.\e" ください。 \&.\e" .Sh IMPLEMENTATION NOTES \&.\e" この次のコマンドはセクション 2, 3, 9 でのみ必要な、関数の \&.\e" 戻り値です。 \&.\e" .Sh RETURN VALUES \&.\e" 次のコマンドはセクション 1, 6, 7, 8, 9 でのみ必要なものです。 \&.\e" .Sh ENVIRONMENT \&.\e" .Sh FILES \&.\e" .Sh EXAMPLES \&.\e" 次のコマンドはセクション 1, 6, 7, 8, 9 でのみ必要なものです。 \&.\e" ((シェルへの)コマンドの戻り値と \&.\e" fprintf/stderr タイプの診断です) \&.\e" .Sh DIAGNOSTICS \&.\e" .Sh COMPATIBILITY \&.\e" 次のコマンドはセクション 2, 3, 9 でのみ必要な、 \&.\e" エラーハンドリングとシグナルハンドリングです。 \&.\e" .Sh ERRORS \&.\e" .Sh SEE ALSO \&.\e" .Sh STANDARDS \&.\e" .Sh HISTORY \&.\e" .Sh AUTHORS \&.\e" .Sh BUGS .Ed .Pp . このテンプレートにおける最初のコマンドはマクロ .Ql .Dd , .Ql .Os , および .Ql .Dt であり、それぞれドキュメントの日付、 マニュアルページもしくは題材となっているソースの開発や変更の 対象となったオペレーティングシステム、そして マニュアルページのタイトルを属するマニュアルのセクション番号と -ともに ( -.Em 大文字で -) 指定したもの、となっています。 +ともに +.Pf ( Em 大文字で ) +指定したもの、となっています。 これらのコマンドはそのページを識別するものであり、後述の .Sx タイトルマクロ で解説されます。 .Pp テンプレート中の残りの項目はセクションのヘッダ .Pf ( Li .Sh ) であり、それらのうち .Sx NAME , .Sx SYNOPSIS , および .Sx DESCRIPTION は必須項目です。 これらのヘッダについては .Sx "マニュアル領域" を説明した後、 .Sx "ページ構造領域" で解説されます。 いくつかのコンテントマクロはページレイアウトマクロの説明に 使用されていますので、ページレイアウトマクロの前にコンテントマクロに ついて読むことを推奨します。 . . .Sh 使用法 . 次に説明するマクロはすべて、オプションの引数は 角括弧 ([]) で括られます。 省略符号 .Pf ( Sq ... ) はさらに 0 個以上の引数があることを表しています。 パラメータの代替値は .Ql | で区切って示します。 必須パラメータに代替値がある場合は、 -( -.Ql | +.Pf ( Ql | と一緒に) 中括弧 ({}) を用い、値の組を括ります。 メタ変数は山括弧 (<>) の中で指定されます。 .Pp 例: . .Bl -tag -width 6n -offset indent .It Li .Xx Xo -.Aq foo +.Aq foo .Brq bar1 | bar2 .Op \-test1 Op \-test2 | \-test3 .No ... .Xc .El . .Pp とくに明示しない限り、すべてのマクロは 構文解析され、呼び出し可能なものです。 .Pp マクロの効果が持続するのは、 次のネストしたマクロまでであることに注意してください。 例えば .Ql ".Ic foo Aq bar" は .Sq Ic "foo " とはならず .Sq Ic foo Aq bar となります。 この結果、最初の引数がマクロである場合、 ほとんどのコマンドに対して警告が出力されます。 マクロがコマンド呼び出しの効果を完全に打ち消してしまうからです。 また、マクロをクォートしても、文字通りのクォートは挿入されないことは重要です。 .Sq Ic "foo " は .Ql ".Ic \*[q]foo \*[q]" から生成されます。 .Pp 大部分のマクロはデフォルトの幅の値を持っており、これを .Ql .Bl および .Ql .Bd マクロ用にラベル width .Pf ( Fl width ) あるいは offset .Pf ( Fl offset ) を指定するのに使用することができます。 .Nm \-mdoc パッケージのローカルな変更に依存することのないように、 このとても曖昧な機能は使わないことを推奨します。 . . .Sh "タイトルマクロ" . タイトルマクロはページ構造領域の一部ですが、 マニュアルページを昨日書き始めようと思ったという人のために、 最初に、他のとは別に記述されています。 3 つのヘッダマクロでドキュメントまたはマニュアルページのタイトル、 オペレーティングシステム、および原著の日付を指定します。 これらのマクロはドキュメントの最初で一度だけ呼び出されるもので、 ヘッダとフッタを構成するためだけに使用されます。 . .Bl -tag -width 6n .It Li .Dt Xo .Op Aq ドキュメントタイトル .Op Aq セクション番号 .Op Aq ボリューム .Xc ドキュメントタイトルはマニュアルページの主題であり、 troff の制限により .Tn 大文字 でなければいけません。 省略された場合、 .Sq Tn UNTITLED が使われます。 セクション番号は .No 1,\~ Ns ... Ns ,\~9 の範囲の番号もしくは .Ql unass , .Ql draft , .Ql paper のいずれかを取ることができます。 セクション番号が指定されており、ボリューム名が与えられていない 場合には、デフォルトのボリューム名が使用されます。 . .Pp .Tn \*[operating-system] では、次のセクションが定義されています: .Pp .Bl -column LOCAL -offset indent -compact .It Li 1 Ta "\*[volume-operating-system] \*[volume-ds-1]" .It Li 2 Ta "\*[volume-operating-system] \*[volume-ds-2]" .It Li 3 Ta "\*[volume-operating-system] \*[volume-ds-3]" .It Li 4 Ta "\*[volume-operating-system] \*[volume-ds-4]" .It Li 5 Ta "\*[volume-operating-system] \*[volume-ds-5]" .It Li 6 Ta "\*[volume-operating-system] \*[volume-ds-6]" .It Li 7 Ta "\*[volume-operating-system] \*[volume-ds-7]" .It Li 8 Ta "\*[volume-operating-system] \*[volume-ds-8]" .It Li 9 Ta "\*[volume-operating-system] \*[volume-ds-9]" .El .Pp . ボリューム名は任意であるか、もしくは次のものを 取ることができます: . .Pp .Bl -column LOCAL -offset indent -compact .It Li USD Ta "\*[volume-ds-USD]" .It Li PS1 Ta "\*[volume-ds-PS1]" .It Li AMD Ta "\*[volume-ds-AMD]" .It Li SMM Ta "\*[volume-ds-SMM]" .It Li URM Ta "\*[volume-ds-URM]" .It Li PRM Ta "\*[volume-ds-PRM]" .It Li KM Ta "\*[volume-ds-KM]" .It Li IND Ta "\*[volume-ds-IND]" .It Li LOCAL Ta "\*[volume-ds-LOCAL]" .It Li CON Ta "\*[volume-ds-CON]" .El .Pp . 互換性を保つため、 .Ql IND の代わりに .Ql MMI を使用することができ、 .Ql LOCAL の代わりに .Ql LOC を使用できます。 先の表の値は、新しいボリューム名を指定します。 第 3 パラメータがコンピュータアーキテクチャを表すキーワードで ある場合、その値は第 2 パラメータで指定したボリューム名の 前に追加されます。 デフォルトでは次のアーキテクチャに関するキーワードが定義されています: . \# we use `No' to avoid hyphenation .Bd -ragged -offset indent .No alpha , acorn26 , acorn32 , algor , amd64 , amiga , arc , arm26 , .No arm32 , atari , bebox , cats , cesfic , cobalt , dreamcast , evbarm , .No evbmips , evbppc , evbsh3 , hp300 , hp700 , hpcmips , i386 , luna68k , .No m68k , mac68k , macppc , mips , mmeye , mvme68k , mvmeppc , netwinder , .No news68k , newsmips , next68k , ofppc , pc532 , pmax , pmppc , powerpc , .No prep , sandpoint , sgimips , sh3 , shark , sparc , sparc64 , sun3 , .No tahoe , vax , x68k , x86_64 .Ed .Pp . セクション番号が 1 から 9 の範囲の数値ではなく、 また前述のキーワードでない場合、 第 3 パラメータがそのままボリューム名として使用されます。 .Pp 次の例では、マニュアルページのヘッダの左側 (これは右側と同じものです) と 中央に書かれる文字列を示しています。 .Ql \e& が数値 7 を正当な数値として解釈されないようにしている点に注意してください。 . .Bd -ragged .Bl -tag -width ".Li .Dt\ FOO\ 2\ i386" -compact -offset indent .It Li ".Dt FOO 7" .Ql FOO(7) .Ql \*[volume-operating-system] \*[volume-ds-7] .It Li ".Dt FOO 7 bar" .Ql FOO(7) .Ql \*[volume-operating-system] \*[volume-ds-7] .It Li ".Dt FOO \e&7 bar" .Ql FOO(7) .Ql bar .It Li ".Dt FOO 2 i386" .Ql FOO(2) .Ql \*[volume-operating-system]/\*[volume-as-i386] \*[volume-ds-2] .It Li ".Dt FOO \*[q]\*[q] bar" .Ql FOO .Ql bar .El .Ed .Pp . ローカルな追加項目や OS に特化した追加項目が、ファイル .Pa mdoc.local -にあるかもしれません。このファイル中で +にあるかもしれません。 +このファイル中で .Ql volume-ds-XXX (前者のタイプについて) および .Ql volume-as-XXX (後者のタイプについて) -という名前の文字列を検索してください。ここで +という名前の文字列を検索してください。 +ここで .Ql XXX は .Ql .Dt マクロで使用されるキーワードを表しています。 .Pp このマクロは呼び出し不可能であり、構文解析もされません。 . .It Li .Os Xo .Op Aq オペレーティングシステム .Op Aq リリース番号 .Xc 第 1 パラメータが空の場合、 デフォルト値 .Sq Tn "\*[operating-system]" が使用されます。 これは、ローカルの設定ファイル .Pa mdoc.local -で上書きできます。一般的には、 +で上書きできます。 +一般的には、 オペレーティングシステムの名称には一般的な頭字語 (略称) を 使わなければなりません。 例えば .Tn BSD や .Tn ATT といったものです。 リリース番号は、各システムでの標準のリリースの命名法を使用します。 次の表では、いくつか事前に定義されているオペレーティングシステムに 対して取り得る第 2 引数をリストしています。 .Ql .Dt と同じように、ローカルな追加項目が .Pa mdoc.local -に定義されているかもしれません。このファイル中で +に定義されているかもしれません。 +このファイル中で .Ql operating-system-XXX-YYY -という名前の文字列を検索してください。ここで +という名前の文字列を検索してください。 +ここで .Ql XXX はオペレーティングシステムの頭字語 (略称) そして .Ql YYY がリリース ID です。 . .Bd -ragged -compact .Bl -tag -width ".No FreeBSD" -offset indent .It ATT 7th, 7, III, 3, V, V.2, V.3, V.4 .It BSD 3, 4, 4.1, 4.2, 4.3, 4.3t, 4.3T, 4.3r, 4.3R, 4.4 .It NetBSD 0.8, 0.8a, 0.9, 0.9a, 1.0, 1.0a, 1.1, 1.2, 1.2a, 1.2b, 1.2c, 1.2d, 1.2e, 1.3, 1.3a, 1.4, 1.4.1, 1.4.2, 1.4.3, 1.5, 1.5.1, 1.5.2, 1.5.3, 1.6, 1.6.1, 1.6.2, 2.0, 2.1 .It FreeBSD 1.0, 1.1, 1.1.5, 1.1.5.1, 2.0, 2.0.5, 2.1, 2.1.5, 2.1.6, 2.1.7, 2.2, 2.2.1, 2.2.2, 2.2.5, 2.2.6, 2.2.7, 2.2.8, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 4.0, 4.1, 4.1.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.6.2, 4.7, 4.8, 4.9, 4.10, 5.0, 5.1, 5.2, 5.2.1, 5.3 .El .Ed .Pp . .Tn ATT に関しては、判別できない第 2 パラメータがある時には それを文字列 .Tn UNIX -に置き換えます。事前に定義されているその他の頭字語 (略称) に +に置き換えます。 +事前に定義されているその他の頭字語 (略称) に ついては、そのようなパラメータは無視され、警告メッセージが 出力されます。 認識できない引数は、ページフッタ中に記述された通りに -表示されます。例えば、典型的なフッタは次のようになるでしょう: +表示されます。 +例えば、典型的なフッタは次のようになるでしょう: .Pp .Dl .Os BSD 4.3 .Pp は .Ql 4.3\~Berkeley Distribution -となります。また、ローカルで作られたセットの例では、 +となります。 +また、ローカルで作られたセットの例では、 .Pp .Dl .Os CS Department .Pp は .Ql CS\~Department となります。 .Pp .Ql .Os マクロがない場合、ページの左下隅は見苦しくなってしまうでしょう。 .Pp このマクロは呼び出し不可能であり、構文解析もされません。 . .It Li .Dd Oo .Aq 月 .Aq 日 , .Aq 年 .Oc .Ql Dd に引数がない場合は、日付には .Ql "基準時点 (協定世界時 1970年1月1日 00:00:00)" が使用されます。 ちょうど 3 つ引数がある場合には、それらは連結され、 分割できない空白で分けられたものになります。 .Pp .Dl .Dd January 25, 2001 .Pp それ以外の場合は現在の日付が使用され、パラメータは無視されます。 .Pp このマクロは呼び出し不可能であり、構文解析もされません。 .El . . .Sh "マニュアル領域および一般テキスト領域の紹介" . .Ss "この名前には何が" Ns ... . マニュアル領域のマクロ名はコマンドやサブルーチン、それに関連ファイルを 説明するために使われている日常のインフォーマルな言葉から取られています。 この言葉と少し違うバリエーションのものがマニュアルページを書く上での 3 つの異なった側面を記述するのに使われます。 最初のものは、 .Nm \-mdoc -マクロコマンド使用方法の説明です。2 番目は +マクロコマンド使用方法の説明です。 +2 番目は .Nm \-mdoc マクロを .Em 用いた .Ux コマンドの記述です。 3 番目はコマンドを通常の言葉の感覚でユーザに示したものです。 これはすなわち、マニュアルページのテキスト中でのコマンドの 説明となります。 .Pp 最初のケースでは、 .Xr troff 1 マクロはそれ自身、一種のコマンドとなっています。 troff コマンドは一般的に以下のような形式をとります。 . .Bd -filled -offset indent .Li ".Xx argument1 argument2" ... .Ed .Pp . .Ql .Xx はマクロコマンドを示しており、それに続くものは すべて処理されるべき引数として処理されます。 2 番目のケースでは、コンテントマクロを使用する .Ux コマンドの記述がもう少し含まれます。 典型的な .Sx SYNOPSIS コマンド行はこのように表示されます。 . .Bd -filled -offset indent .Nm filter .Op Fl flag .Ao Ar infile Ac Ao Ar outfile Ac .Ed .Pp . ここで .Nm filter はコマンド名であり、角括弧で囲まれた文字列 .Fl flag は .Em フラグ 引数で、これは角括弧で囲むことによってオプションであることを 示しています。 .Nm \-mdoc の用語では、 .Ao Ar infile Ac および .Ao Ar outfile Ac は .Em メタ引数 と称されています。 この例では、ユーザは山括弧 (<>) の中で与えられたメタ引数を 実際のファイル名に置き換えなくてはなりません。 このドキュメントでは、メタ引数は .Nm \-mdoc コマンドを記述するのに使用していることに注意してください。 多くのマニュアルページでは、メタ変数はわざわざ山括弧を使って 書かれていません。 上の例を整形したマクロは以下のものです。 . .Bd -literal -offset indent \&.Nm filter \&.Op Fl flag \&.Ao Ar infile Ac Ao Ar outfile Ac .Ed .Pp . 3 番目のケースでは、コマンドの説明や構文に上記の例の両方が使われ、 さらに細かい記述が追加されるでしょう。 上の例での引数 .Ao Ar infile Ac および .Ao Ar outfile Ac は .Em オペランド もしくは .Em ファイル引数 として参照されます。 コマンド行の引数のリストはかなり長くなる場合もあります。 . .Bd -ragged .Bl -tag -width ".Nm make" -offset indent -compact .It Nm make .Op Fl eiknqrstv .Op Fl D Ar variable .Op Fl d Ar flags .Op Fl f Ar makefile .Op Fl I Ar directory .Op Fl j Ar max_jobs .Op Ar variable Ns = Ns Ar value .Bk .Op Ar target ... .Ek .El .Ed .Pp . ここではコマンド .Nm make について記述しており、 .Ar makefile をフラグ .Fl f の引数としています。 またオプションのファイルオペランドである .Ar target についても言及しています。 言葉での説明では、こういった詳細な記述が混乱を防いでくれますが、 .Nm \-mdoc パッケージにはフラグ .Em への 引数のためのマクロがありません。 その代わりに .Ar target のようなオペランドやファイル引数に使われる引数マクロ .Ql \&Ar が .Ar variable のようなフラグへの引数と同様に使われます。 この make コマンド行は次の指定により生成されています。 . .Bd -literal -offset indent \&.Nm make \&.Op Fl eiknqrstv \&.Op Fl D Ar variable \&.Op Fl d Ar flags \&.Op Fl f Ar makefile \&.Op Fl I Ar directory \&.Op Fl j Ar max_jobs \&.Op Ar variable Ns = Ns Ar value \&.Bk \&.Op Ar target ... \&.Ek .Ed .Pp . マクロ .Ql .Bk および .Ql .Ek は .Sx キープ セクションにおいて解説されています。 . .Ss "一般的な構文" . マニュアル領域のマクロと一般テキスト領域のマクロとはいくつか -小さな違いがあるものの、同様な構文を使用しています。とりわけ、 +小さな違いがあるものの、同様な構文を使用しています。 +とりわけ、 .Ql .Ar , .Ql .Fl , .Ql .Nm , および .Ql .Pa -は引数なしで呼び出された時の違いしかありません。また、 +は引数なしで呼び出された時の違いしかありません。 +また、 .Ql .Fn および .Ql .Xr は引数のリストの順番が異なります。 すべてのコンテントマクロが句読点を認識し、それを正しく扱うには、 各々の句読点文字が先行する空白で分離されている必要があります。 次のようにコマンドが指定されている場合、 .Pp .Dl \&.Ar sptr, ptr), .Pp その結果は以下のようになります。 .Pp .Dl Ar sptr, ptr), .Pp ここでは句読点は認識されず、すべての出力は .Ql .Ar で使用されるフォントで行われています。 句読点が空白文字で区切られている場合、 .Pp .Dl \&.Ar "sptr , ptr ) ," .Pp 結果は以下のようになります。 .Pp .Dl Ar sptr , ptr ) , .Pp 今度は句読点が認識され、出力はデフォルトのフォントで行われ 引数文字列とは区別されています。 句読点文字の特別な意味を取り除くには、 .Ql \e& でエスケープしてください。 .Pp .Nm \-mdoc は次の句読点文字を認識します。 . .Bl -column -offset indent-two XXXXXX XXXXXX XXXXXX XXXXXX .It Li .\& Ta Li ,\& Ta Li :\& Ta Li ;\& Ta Li (\& .It Li )\& Ta Li [\& Ta Li ]\& Ta Li ?\& Ta Li !\& .El .Pp . .Xr troff はマクロ言語としての限界から、以下のような、数学、論理学、引用符の 集合のメンバを含んだ文字列を表現するのは困難です。 . .Bd -literal -offset indent-two {+,\-,/,*,%,<,>,<=,>=,=,==,&,`,',"} .Ed .Pp . 問題なのは、文字によって示唆されている操作もしくは評価が、 実行されるべきであると .Xr troff が仮定する場合があることです。 これらの文字が予期しない形で評価されないようにするには、 .Ql \e& でこれらをエスケープしてください。 最初のコンテントマクロは、以下の .Ql .Ad において、その典型的な構文が示されています。 . . .Sh "マニュアル領域" . .Ss "アドレス" . アドレスマクロはアドレスの構成を識別します。 .Pp .Dl 使い方: .Ad Ao アドレス Ac ... .Pp .Bl -tag -width ".Li .Ad\ f1\ ,\ f2\ ,\ f3\ :" -compact -offset 15n .It Li ".Ad addr1" .Ad addr1 .It Li ".Ad addr1 ." .Ad addr1 . .It Li ".Ad addr1 , file2" .Ad addr1 , file2 .It Li ".Ad f1 , f2 , f3 :" .Ad f1 , f2 , f3 : .It Li ".Ad addr ) ) ," .Ad addr ) ) , .El .Pp . デフォルトの文字幅は 12n です。 . .Ss "作者名" . .Ql .An コマンドは文書化されている項目の作者の名前、もしくは実際の マニュアルページの作者の名前を指定するために使われます。 .Pp .Dl 使い方: .An Ao 作者名 Ac ... .Pp .Bl -tag -width ".Li .An\ \*[q]Joe\ Author\*[q]\ )\ )\ ," -offset 15n .It Li ".An \*[q]Joe Author\*[q]" .An "Joe Author" .It Li ".An \*[q]Joe Author\*[q] ," .An "Joe Author" , .It Li ".An \*[q]Joe Author\*[q] Aq nobody@FreeBSD.org" .An "Joe Author" Aq nobody@FreeBSD.org .It Li ".An \*[q]Joe Author\*[q] ) ) ," .An "Joe Author" ) ) , .El .Pp . デフォルトの文字幅は 12n です。 .Pp .Sx AUTHORS セクションでは、 .Ql .An リクエストは改行を引き起こし、新しい名前がそれぞれの行に表示されます。 この動作が望ましくない場合、 . .Bd -literal -offset indent \&.An -nosplit .Ed .Pp . を呼び出すことで無効にできます。 それぞれの行に表示させる動作に戻したい場合は、 . .Bd -literal -offset indent \&.An -split .Ed -.Pp -. +.\" 次の .sp は翻訳で追加。 +.sp と記述します。 . .Ss "引数" . 引数マクロ .Li .Ar はコマンド行の引数を参照する際にはいつでも使用することができます。 引数なしで呼ばれた場合、 .Sq Ar が出力になります。 .Pp .Dl 使い方: .Ar Oo Ao 引数 Ac Oc ... .Pp .Bl -tag -width ".Li .Ar\ file1\ file2" -compact -offset 15n .It Li .Ar .Ar .It Li ".Ar file1" .Ar file1 .It Li ".Ar file1 ." .Ar file1 . .It Li ".Ar file1 file2" .Ar file1 file2 .It Li ".Ar f1 f2 f3 :" .Ar f1 f2 f3 : .It Li ".Ar file ) ) ," .Ar file ) ) , .El .Pp . デフォルト幅は 12n です。 . .Ss "コンフィギュレーション宣言 (セクション 4 のみ)" . .Ql .Cd コマンドはセクション 4 のマニュアルにおいて、デバイスインタフェースの .Xr config 8 による宣言の説明に使われます。 .Pp .Dl 使い方: .Cd Ao 引数 Ac ... .Pp .Bl -tag -width ".Li .Cd\ Xdevice\ le0\ at\ scode?X" -offset 15n .It Li ".Cd \*[q]device le0 at scode?\*[q]" .Cd "device le0 at scode?" .El .Pp .Sx SYNOPSIS セクションでは .Ql .Cd リクエストはその引数が表示される前後で改行を入れます。 .Pp . デフォルト幅は 12n です。 . .Ss "コマンド修飾子" . コマンド修飾子は .Ql .Cm マクロがすべての引数の前にダッシュ文字を付けないことを除いて、 .Ql .Fl (フラグ) コマンドと同じです。 伝統的にフラグはダッシュ文字に引き続いて指定されますが、 この方法を使わないコマンドやコマンドのサブセットもあります。 コマンド修飾子はエディタコマンドのような対話的なコマンドでも 指定されることがあります。 .Sx フラグ セクションを参照してください。 .Pp デフォルト幅は 10n です。 . .Ss "定義済みの変数" . インクルードファイルにおいて定義されている変数 (もしくは定数) は マクロ .Ql .Dv によって指定します。 .Pp .Dl 使い方: .Dv Ao 定義済みの変数 Ac ... .Pp .Bl -tag -width ".Li .Dv\ MAXHOSTNAMELEN" -compact -offset 15n .It Li ".Dv MAXHOSTNAMELEN" .Dv MAXHOSTNAMELEN .It Li ".Dv TIOCGPGRP )" .Dv TIOCGPGRP ) .El .Pp . デフォルト幅は 12n です。 . .Ss errno . .Ql .Er errno マクロは、セクション 2, 3, 9 のライブラリルーチンにおける エラーの戻り値を指定します。 下記の 2 番目の例では .Ql .Er は一般テキスト領域マクロである .Ql .Bq (これはセクション 2 のマニュアルページで使われています) と共に 使われています。 .Pp .Dl 使い方: .Er Ao errno のタイプ Ac ... .Pp .Bl -tag -width ".Li .Bq\ Er\ ENOTDIR" -compact -offset 15n .It Li ".Er ENOENT" .Er ENOENT .It Li ".Er ENOENT ) ;" .Er ENOENT ) ; .It Li ".Bq Er ENOTDIR" .Bq Er ENOTDIR .El .Pp . デフォルト幅は 17n です。 . .Ss "環境変数" . .Ql .Ev マクロは環境変数を指定します。 .Pp .Dl 使い方: .Ev Ao 引数 Ac ... .Pp .Bl -tag -width ".Li .Ev\ PRINTER\ )\ )\ ," -compact -offset 15n .It Li ".Ev DISPLAY" .Ev DISPLAY .It Li ".Ev PATH ." .Ev PATH . .It Li ".Ev PRINTER ) ) ," .Ev PRINTER ) ) , .El .Pp . デフォルト幅は 15n です。 . .Ss "フラグ" . .Ql .Fl マクロはコマンド行のフラグを扱います。 フラグの前にはダッシュ .Ql \- が挿入されます。 ダッシュがつかない対話的なコマンドのために .Ql .Cm (コマンド修飾子) マクロが用意されています。 これはダッシュを付けないことを除いて同じ働きをします。 .Pp .Dl 使い方: .Fl Ao 引数 Ac ... .Pp .Bl -tag -width ".Li .Fl\ xyz\ )\ ," -compact -offset 15n .It Li .Fl .Fl .It Li ".Fl cfv" .Fl cfv .It Li ".Fl cfv ." .Fl cfv . .It Li ".Cm cfv ." .Cm cfv . .It Li ".Fl s v t" .Fl s v t .It Li ".Fl \- ," .Fl \- , .It Li ".Fl xyz ) ," .Fl xyz ) , .It Li ".Fl |" .Fl | .El .Pp 引数なしで .Ql .Fl マクロを指定すると、標準入力/標準出力を意味するダッシュとなります。 .Ql .Fl マクロにダッシュを 1 つ与えると、2 つのダッシュとなることに 注意して下さい。 .Pp デフォルト幅は 12n です。 . .Ss "関数の宣言" . .Ql .Fd コマンドは .Sx SYNOPSIS セクションにおいて、セクション 2 または 3 の関数の説明で使われます。 このマクロは呼び出し不可能であり、構文解析もされせん。 .Pp .Dl 使い方: .Fd Ao 引数 Ac ... .Pp .Bl -tag -width ".Li .Fd\ X#include\ X" -compact -offset 15n .It Li ".Fd \*[q]#include \*[q]" .Fd "#include " .El .Pp .Sx SYNOPSIS セクションでは、 関数がすでに示されており、改行がまだされていない場合には .Ql .Fd リクエストは改行を入れます。 これによって前の関数呼び出しと次の関数の宣言の間に 最適な行間が設定されます。 . .Pp .Ql .In マクロは、 .Sx SYNOPSIS セクションで使用すると、 .Li #include 文を表現するものであり、以上の例を短く記述したものです。 このマクロは C プログラム中でインクルードされる C ヘッダファイルを指定します。 このマクロも改行を挿入します。 .Pp .Sx SYNOPSIS セクション以外で使用すると、 山括弧で括られたヘッダファイルを表現します。 .Pp .Dl 使い方: .In Ao ヘッダファイル Ac .Pp .Bl -tag -width ".Li .In\ stdio.h" -compact -offset 15n .nr in-synopsis-section 1 .It Li ".In stdio.h" .In stdio.h .nr in-synopsis-section 0 .It Li ".In stdio.h" .In stdio.h .El . .Ss "関数の型" . このマクロは .Sx SYNOPSIS セクションで使うものです。 マニュアルページ中の他の場所でも問題なく使うことができますが、 セクション 2 と 3 の .Sx SYNOPSIS セクションにおいてカーネルの通常の形式で関数の型を示すことが このマクロの目的です (このマクロは関数名が次の行に置かれるように改行を挿入します)。 .Pp .Dl 使い方: .Ft Ao 型 Ac ... .Pp .Bl -tag -width ".Li .Ft\ struct\ stat" -compact -offset 15n .It Li ".Ft struct stat" .Ft struct stat .El . .Ss "関数 (ライブラリルーチン)" . .Ql .Fn マクロは .Tn ANSI\~C の記法を規範としています。 .Pp .Dl 使い方: .Fn Ao 関数 Ac Oo Ao パラメータ Ac Oc ... .Pp .Bl -tag -width ".Li .Fn\ align\ Xchar\ *ptrX\ ," -compact -offset 15n .It Li ".Fn getchar" .Fn getchar .It Li ".Fn strlen ) ," .Fn strlen ) , .It Li ".Fn align \*[q]char *ptr\*[q] ," .Fn align "char *ptr" , .El .Pp 他のマクロを呼び出すと .Ql .Fn 呼び出しの終了を意味することに注意してください (閉じ括弧がその箇所に挿入されます)。 .Pp 多くのパラメータをとる関数 (これは滅多にないことですが) では、 .Ql .Fo マクロ (関数マクロの開始) と .Ql .Fc マクロ (関数マクロの終了) を .Ql .Fa (関数の引数) と共に使って、この制限を回避することができます。 .Pp 使用例: . .Bd -literal -offset indent \&.Ft int \&.Fo res_mkquery \&.Fa "int op" \&.Fa "char *dname" \&.Fa "int class" \&.Fa "int type" \&.Fa "char *data" \&.Fa "int datalen" \&.Fa "struct rrec *newrr" \&.Fa "char *buf" \&.Fa "int buflen" \&.Fc .Ed .Pp . 生成結果: . .Bd -ragged -offset indent .Ft int .Fo res_mkquery .Fa "int op" .Fa "char *dname" .Fa "int class" .Fa "int type" .Fa "char *data" .Fa "int datalen" .Fa "struct rrec *newrr" .Fa "char *buf" .Fa "int buflen" .Fc .Ed .Pp . .Sx SYNOPSIS セクションでは、関数は常に行の先頭から開始されます。 .Sx SYNOPSIS セクションにおいて複数の関数が示されており、関数の型が 示されない場合、改行が挿入され、現在の関数名とその前の 関数名の間に最適な改行量が設定されます。 .Pp .Ql .Fn および .Ql .Fo のデフォルト幅の値はそれぞれ 12n と 16n です。 . .Ss "関数の引数" . .Ql .Fa マクロは関数の引数 (パラメータ) を マニュアルの .Sx SYNOPSIS のセクション外で参照する場合、あるいは .Ql .Fn の代わりに .Ql .Fo および .Ql .Fc 囲いマクロを使用した場合には .Sx SYNOPSIS のセクション内で参照する場合にも使われます。 .Ql .Fa は構造体のメンバを参照する場合にも使われます。 .Pp .Dl 使い方: .Fa Ao 関数の引数 Ac ... .Pp .Bl -tag -width ".Li .Fa\ d_namlen\ )\ )\ ," -compact -offset 15n .It Li ".Fa d_namlen ) ) ," .Fa d_namlen ) ) , .It Li ".Fa iov_len" .Fa iov_len .El .Pp . デフォルト幅は 12n です。 . .Ss "戻り値" . .Ql .Rv マクロは .Sx RETURN VALUES のセクションで使うテキストを生成します。 .Pp .Dl 使い方: .Rv Oo -std Oc Op Ao 関数 Ac ... .Pp 例えば、 .Ql ".Rv -std atexit" は次のテキストを生成します。 . .Bd -ragged -offset -indent \# a small hack to suppress a warning message .ds section-old "\*[section] .ds section 3 +.\" --- 追加 START --- .\" following part came from doc.tmac workaround the effect of .\" -dlang=ja_JP.eucJP .ds str-Rv-std-prefix "The .ds str-Rv-std-suffix "function returns the value\~0 if successful; .as str-Rv-std-suffix " otherwise the value\~-1 is returned and .as str-Rv-std-suffix " the global variable \*[Va-font]errno\f[P] .as str-Rv-std-suffix " is set to indicate the error. .ds str-Rv-stds-prefix "The .ds str-Rv-stds-and "and .ds str-Rv-stds-suffix "functions return the value\~0 if successful; .as str-Rv-stds-suffix " otherwise the value\~-1 is returned and .as str-Rv-stds-suffix " the global variable \*[Va-font]errno\f[P] .as str-Rv-stds-suffix " is set to indicate the error. .ds str-Rv-std0 "Upon successful completion, the value\~0 is returned; .as str-Rv-std0 " otherwise the value\~-1 is returned and .as str-Rv-std0 " the global variable \*[Va-font]errno\f[P] .as str-Rv-std0 " is set to indicate the error. +.\" --- 追加 END --- .Rv -std atexit .ds section "\*[section-old] .Ed .Pp . .Fl std オプションはセクション 2 と 3 のマニュアルページでのみ有効です。 現在のところ、このマクロは .Fl std フラグなしで使用しても何も起こりません。 . .Ss "終了ステータス" . .Ql .Ex マクロは .Sx DIAGNOSTICS のセクションで使うテキストを生成します。 .Pp .Dl 使い方: .Ex Oo -std Oc Op Ao ユーティリティ Ac ... .Pp 例えば .Ql ".Ex -std cat" は次のテキストを生成します。 . .Bd -ragged -offset -indent \# a small hack to suppress a warning message .ds section-old "\*[section] .ds section 1 +.\" --- 追加 START --- .\" following part came from doc.tmac workaround the effect of .\" -dlang=ja_JP.eucJP .ds str-Ex-std-prefix "The .ds str-Ex-std-suffix "utility exits\~0 on success, .as str-Ex-std-suffix " and\~>0 if an error occurs. .ds str-Ex-stds-prefix "The .als str-Ex-stds-and str-Rv-stds-and .ds str-Ex-stds-suffix "utilities exit\~0 on success, .as str-Ex-stds-suffix " and\~>0 if an error occurs. +.\" --- 追加 END --- .Ex -std cat .ds section "\*[section-old] .Ed .Pp . .Fl std オプションはセクション 1 と 6 と 8 のマニュアルページでのみ有効です。 現在のところ、このマクロは .Fl std フラグなしで使用しても何も起こりません。 . .Ss "対話的なコマンド" . .Ql .Ic マクロは対話的なコマンド、もしくは内部コマンドを指定します。 .Pp .Dl 使い方: .Ic Ao 引数 Ac ... .Pp .Bl -tag -width ".Li .Ic\ setenv\ ,\ unsetenv" -compact -offset 15n .It Li ".Ic :wq" .Ic :wq .It Li ".Ic \*[q]do while {...}\*[q]" .Ic "do while {...}" .It Li ".Ic setenv , unsetenv" .Ic setenv , unsetenv .El .Pp . デフォルト幅は 12n です。 . .Ss "ライブラリ名" . .Ql .Lb マクロは、関数がどのライブラリに組み込まれるかを指定します。 .Pp .Dl 使い方: .Lb Ao 引数 Ac ... .Pp -.Ql .Lb +.Ql .Lb マクロに対して使用可能な引数と結果は次の通りです: . .Pp .Bl -tag -width ".Li libossaudio" -compact -offset indent .It Li libarm .Lb libarm .It Li libarm32 .Lb libarm32 .It Li libc .Lb libc .It Li libcdk .Lb libcdk .It Li libcompat .Lb libcompat .It Li libcrypt .Lb libcrypt .It Li libcurses .Lb libcurses .It Li libedit .Lb libedit .It Li libevent .Lb libevent .It Li libform .Lb libform .It Li libi386 .Lb libi386 .It Li libintl .Lb libintl .It Li libipsec .Lb libipsec .It Li libkvm .Lb libkvm .It Li libm .Lb libm .It Li libm68k .Lb libm68k .It Li libmagic .Lb libmagic .It Li libmenu .Lb libmenu .It Li libossaudio .Lb libossaudio +.It Li libpam +.Lb libpam .It Li libpcap .Lb libpcap .It Li libpci .Lb libpci .It Li libpmc .Lb libpmc .It Li libposix .Lb libposix .It Li libpthread .Lb libpthread .It Li libresolv .Lb libresolv .It Li librt .Lb librt .It Li libtermcap .Lb libtermcap .It Li libusbhid .Lb libusbhid .It Li libutil .Lb libutil .It Li libx86_64 .Lb libx86_64 .It Li libz .Lb libz .El .Pp . ローカルな追加項目や OS 特有の追加項目が、ファイル .Pa mdoc.local にあるかもしれません。 .Ql str-Lb-XXX -という名前の文字列を検索してください。ここで +という名前の文字列を検索してください。 +ここで .Ql XXX は .Ql .Lb マクロとともに使用されるキーワードを示しています。 .Pp .Sx ライブラリ のセクションでは、 .Ql .Lb コマンドは、引数の表示の前後でラインブレークを引き起こします。 .Pp . .Ss リテラル . リテラルマクロ .Ql .Li は特殊文字や変数定数、その他タイプされた通りに表示する必要があるものに 使用することができます。 .Pp .Dl 使い方: .Li Ao 引数 Ac ... .Pp .Bl -tag -width ".Li .Li\ cntrl-D\ )\ ," -compact -offset 15n .It Li ".Li \een" .Li \en .It Li ".Li M1 M2 M3 ;" .Li M1 M2 M3 ; .It Li ".Li cntrl-D ) ," .Li cntrl-D ) , .It Li ".Li 1024 ..." .Li 1024 ... .El .Pp . デフォルト幅は 16n です。 . .Ss 名称 . .Ql .Nm マクロは文書のタイトルやサブジェクト名を指定するために使われます。 このマクロは呼び出された時の第 1 引数を覚えておくという 変わった特性を持っており、 それは常にそのページのサブジェクト名であるべきです。 引数なしで呼び出されると .Ql .Nm は作者のために最低限の仕事をするという意味で、 この初期化された名称を出力します。 注: セクション 2 または 3 のドキュメントの関数名は .Sx NAME セクションにおいて .Ql .Nm で指定され、 .Sx SYNOPSIS セクションや残りのセクションでは .Ql .Fn で指定されます。 .Xr csh 1 での .Ql while コマンドのキーワードのような対話的なコマンドでは .Ql .Ic マクロを使う必要があります。 .Ql .Ic はほとんど .Ql .Nm と同一ですが、 それが使われたときの第 1 引数を記憶することはできません。 .Pp .Dl 使い方: .Nm Oo Ao 引数 Ac Oc ... .Pp .Bl -tag -width ".Li .Nm\ groff_mdoc" -compact -offset 15n .It Li ".Nm groff_mdoc" .Nm groff_mdoc .It Li ".Nm \e-mdoc" .Nm \-mdoc .It Li ".Nm foo ) ) ," .Nm foo ) ) , .It Li ".Nm :" .Nm : .El .Pp . デフォルト幅は 10n です。 . .Ss オプション . .Ql .Op マクロはコマンド行の残りのすべての引数を オプションであることを示す角括弧で囲み、 末尾の句読点は角括弧の外に置きます。 .Ql .Oo マクロと .Ql .Oc マクロ (それぞれ開き角括弧と閉じ角括弧を生成します) は 複数行に渡って使うことができ、また閉じ括弧の正確な位置を 指定するのに使うことができます。 .Pp .Dl 使い方: .Op Oo Ao オプション Ac Oc ... .Pp .Bl -tag -width ".Li .Op\ Fl\ c\ Ar\ objfil\ Op\ Ar\ corfil\ ," -compact -offset 15n .It Li .Op .Op .It Li ".Op Fl k" .Op Fl k .It Li ".Op Fl k ) ." .Op Fl k ) . .It Li ".Op Fl k Ar kookfile" .Op Fl k Ar kookfile .It Li ".Op Fl k Ar kookfile ," .Op Fl k Ar kookfile , .It Li ".Op Ar objfil Op Ar corfil" .Op Ar objfil Op Ar corfil .It Li ".Op Fl c Ar objfil Op Ar corfil ," .Op Fl c Ar objfil Op Ar corfil , .It Li ".Op word1 word2" .Op word1 word2 .It Li ".Li .Op Oo Ao option Ac Oc ..." .Li .Op Oo Ao options Ac Oc ... .El .Pp これは、 .Ql .Oo マクロと .Ql .Oc マクロを使った典型的な例です: . .Bd -literal -offset indent \&.Oo \&.Op Fl k Ar kilobytes \&.Op Fl i Ar interval \&.Op Fl c Ar count \&.Oc .Ed .Pp . 出力結果: . .Bd -filled -offset indent .Oo .Op Fl k Ar kilobytes .Op Fl i Ar interval .Op Fl c Ar count .Oc .Ed .Pp . .Ql .Op マクロおよび .Ql .Oo マクロのデフォルト幅はそれぞれ 14n と 10n です。 . .Ss パス名 . .Ql .Pa マクロはパス名もしくはファイル名を整形します。 引数なしで呼ばれた場合、 .Sq Pa 文字列が出力となり、これは現在のユーザのホームディレクトリを 表しています。 .Pp .Dl 使い方: .Pa Oo Ao パス名 Ac Oc ... .Pp .Bl -tag -width ".Li .Pa\ /tmp/fooXXXXX\ )\ ." -compact -offset 15n .It Li .Pa .Pa .It Li ".Pa /usr/share" .Pa /usr/share .It Li ".Pa /tmp/fooXXXXX ) ." .Pa /tmp/fooXXXXX ) . .El .Pp . デフォルト幅は 32n です。 . .Ss 規格 . .Ql .St マクロは、規格の短縮名称を正式名称に置換します。 .Pp .Dl 使い方: .St Ao 短縮名称 Ac ... .Pp 使用可能な .Dq 短縮名称/正式名称 の組は次の通りです: . .Pp .Tn ANSI/ISO C .Pp .Bl -tag -width ".Li -iso9945-1-90" -compact -offset indent .It Li -ansiC .St -ansiC .It Li -ansiC-89 .St -ansiC-89 .It Li -isoC .St -isoC .It Li -isoC-90 .St -isoC-90 .It Li -isoC-99 .St -isoC-99 .El .Pp . .Tn POSIX パート 1: System API .Pp .Bl -tag -width ".Li -p1003.1g-2000" -compact -offset indent .It Li -iso9945-1-90 .St -iso9945-1-90 .It Li -iso9945-1-96 .St -iso9945-1-96 .It Li -p1003.1 .St -p1003.1 .It Li -p1003.1-88 .St -p1003.1-88 .It Li -p1003.1-90 .St -p1003.1-90 .It Li -p1003.1-96 .St -p1003.1-96 .It Li -p1003.1b-93 .St -p1003.1b-93 .It Li -p1003.1c-95 .St -p1003.1c-95 .It Li -p1003.1g-2000 .St -p1003.1g-2000 .It Li -p1003.1i-95 .St -p1003.1i-95 .It Li -p1003.1-2001 .St -p1003.1-2001 .It Li -p1003.1-2004 .St -p1003.1-2004 .El .Pp . .Tn POSIX パート 2: シェルとユーティリティ .Pp .Bl -tag -width ".Li -p1003.1g-2000" -compact -offset indent .It Li -iso9945-2-93 .St -iso9945-2-93 .It Li -p1003.2 .St -p1003.2 .It Li -p1003.2-92 .St -p1003.2-92 .It Li -p1003.2a-92 .St -p1003.2a-92 .El .Pp . X/Open .Bl -tag -width ".Li -p1003.1g-2000" -compact -offset indent .Pp .It Li -susv2 .St -susv2 .It Li -svid4 .St -svid4 .It Li -xbd5 .St -xbd5 .It Li -xcu5 .St -xcu5 .It Li -xcurses4.2 .St -xcurses4.2 .It Li -xns5 .St -xns5 .It Li -xns5.2 .St -xns5.2 .It Li -xpg3 .St -xpg3 .It Li -xpg4 .St -xpg4 .It Li -xpg4.2 .St -xpg4.2 .It Li -xsh5 .St -xsh5 .El .Pp . その他 .Pp .Bl -tag -width ".Li -p1003.1g-2000" -compact -offset indent .It Li -ieee754 .St -ieee754 .It Li -iso8802-3 .St -iso8802-3 .El . .Ss "変数の型" . .Ql .Vt マクロは型を参照するときにはいつでも使用することができます。 .Sx SYNOPSIS セクションでは改行が挿入されます (古いスタイルの変数宣言では便利です)。 .Pp .Dl 使い方: .Vt Ao 型 Ac ... .Pp .Bl -tag -width ".Li .Vt\ extern\ char\ *optarg\ ;" -compact -offset 15n .It Li ".Vt extern char *optarg ;" .Vt extern char *optarg ; .It Li ".Vt FILE *" .Vt FILE * .El . .Ss 変数 . 一般的な変数への参照です。 .Pp .Dl 使い方: .Va Ao 変数 Ac ... .Pp .Bl -tag -width ".Li .Va\ Xchar\ sX\ ]\ )\ )\ ," -compact -offset 15n .It Li ".Va count" .Va count .It Li ".Va settimer ," .Va settimer , .It Li ".Va \*[q]int *prt\*[q] ) :" .Va "int *prt" ) : .It Li ".Va \*[q]char s\*[q] ] ) ) ," .Va "char s" ] ) ) , .El .Pp . デフォルト幅は 12n です。 . .Ss "マニュアルページのクロスリファレンス" . .Ql .Xr マクロは最初の引数にマニュアルページの名称をとります。 オプションである第 2 引数は、文字列 (マニュアルセクションを定義します) であれば 括弧で囲われます。 .Pp .Dl 使い方: .Xr Ao マニュアルページの名称 Ac Oo Ao セクション Ac Oc ... .Pp .Bl -tag -width ".Li .Xr\ xinit\ 1x\ ;" -compact -offset 15n .It Li ".Xr mdoc" .Xr mdoc .It Li ".Xr mdoc ," .Xr mdoc , .It Li ".Xr mdoc 7" .Xr mdoc 7 .It Li ".Xr xinit 1x ;" .Xr xinit 1x ; .El .Pp . デフォルト幅は 10n です。 . . .Sh "一般テキスト領域" . .Ss "AT&T マクロ" . .Pp .Dl 使い方: .At Oo Ao バージョン Ac Oc ... .Pp .Bl -tag -width ".Li .At\ v6\ ." -compact -offset 15n .It Li .At .At .It Li ".At v6 ." .At v6 . .El .Pp .Ao バージョン Ac には次の値をとることができます: .Pp .Dl 32v, v1, v2, v3, v4, v5, v6, v7, V, V.1, V.2, V.3, V.4 . .Ss "BSD マクロ" . .Pp .Dl "使い方: .Bx" Bro -alpha | -beta | -devel Brc ... .Dl " .Bx" Oo Ao バージョン Ac Oo Ao リリース Ac Oc Oc ... .Pp .Bl -tag -width ".Li .Bx\ -devel" -compact -offset 15n .It Li .Bx .Bx .It Li ".Bx 4.3 ." .Bx 4.3 . .It Li ".Bx \-devel" .Bx -devel .El .Pp .Ao バージョン Ac が文字列 .Sq Bx の前につきます。 .Ao リリース Ac には次の値をとることができます: .Pp .Dl Reno, reno, Tahoe, tahoe, Lite, lite, Lite2, lite2 . .Ss "NetBSD マクロ" . .Pp .Dl 使い方: .Nx Oo Ao バージョン Ac Oc ... .Pp .Bl -tag -width ".Li .Nx\ 1.4\ ." -compact -offset 15n .It Li .Nx .Nx .It Li ".Nx 1.4 ." .Nx 1.4 . .El .Pp .Ao バージョン Ac にとり得る値については前述の .Sx "タイトルマクロ" セクションの .Ql .Os コマンドの説明を参照してください。 . .Ss "FreeBSD マクロ" . .Pp .Dl 使い方: .Fx Oo Ao バージョン Ac Oc ... .Pp .Bl -tag -width ".Li .Fx\ 2.2\ ." -compact -offset 15n .It Li .Fx .Fx .It Li ".Fx 2.2 ." .Fx 2.2 . .El .Pp .Ao バージョン Ac にとり得る値については前述の .Sx "タイトルマクロ" セクションの .Ql .Os コマンドの説明を参照してください。 . .Ss "OpenBSD マクロ" . .Pp .Dl 使い方: .Ox Oo Ao バージョン Ac Oc ... .Pp .Bl -tag -width ".Li .Ox\ 1.0" -compact -offset 15n .It Li ".Ox 1.0" .Ox 1.0 .El . .Ss "BSD/OS マクロ" . .Pp .Dl 使い方: .Bsx Oo Ao バージョン Ac Oc ... .Pp .Bl -tag -width ".Li .Bsx\ 1.0" -compact -offset 15n .It Li ".Bsx 1.0" .Bsx 1.0 .El . .Ss "UNIX マクロ" . .Pp .Dl 使い方: .Ux ... .Pp .Bl -tag -width ".Li .Ux" -compact -offset 15n .It Li .Ux .Ux .El . .Ss "強調マクロ" . テキストは .Ql .Em マクロを用いて強調することができます。 通常強調に用いられるフォントはイタリック体です。 .Pp .Dl 使い方: .Em Ao 引数 Ac ... .Pp .Bl -tag -width ".Li .Em\ vide\ infra\ )\ )\ ," -compact -offset 15n .It Li ".Em does not" .Em does not .It Li ".Em exceed 1024 ." .Em exceed 1024 . .It Li ".Em vide infra ) ) ," .Em vide infra ) ) , .El .Pp . デフォルト幅は 10n です。 . .Ss "フォントモード" . .Ql .Bf フォントモードは .Ql .Ef マクロで終了しなくてはなりません (後者のマクロは引数をとりません)。 フォントモードは別のフォントモード内に入れ子にできます。 .Pp .Ql .Bf は次の文法をもっています: .Pp .Dl .Bf Ao フォントモード Ac .Pp .Ao フォントモード Ac は次の 3 種類のうちのいずれかでなくてはなりません。 .Pp .Bl -tag -width ".Sy \&Sy | Fl symbolic" -compact -offset indent .It Sy \&Em | Fl emphasis .Ql .Em マクロがテキストのブロック全体に対して使用された場合と 同じになります。 .It Sy \&Li | Fl literal .Ql .Li マクロがテキストのブロック全体に対して使用された場合と 同じになります。 .It Sy \&Sy | Fl symbolic .Ql .Sy マクロがテキストのブロック全体に対して使用された場合と 同じになります。 .El .Pp いずれのマクロも呼び出し不可能であり、構文解析もされません。 . .Ss "囲い/クォートマクロ" . 囲いの概念はクォートと似たものです。 1 つ以上の文字列が引用符や括弧のような文字のペアで囲まれている オブジェクトを指します。 クォートと囲いという用語はこの文書を通して同じ意味で使われます。 ほとんどの 1 行の囲いマクロはクォートであることをほのめかすために、 小文字の .Ql q で終了しますが、例外もいくつかあります。 各々の囲いマクロに対し、開始マクロと終了マクロのペアもあり、 それぞれ小文字の .Ql o と .Ql c で終了します。 .Pp \# XXX .if t \ . ne 10 . .Bd -filled -offset 4n .Bl -column "クォート" "終了" "開始" "クォートされたリテラル" "`string' もしくは string" .Em クォート Ta Em 開始 Ta Em 終了 Ta Em 機能 Ta Em 結果 .No .Aq Ta .Ao Ta .Ac Ta "山括弧による囲い" Ta Ao string Ac .No .Bq Ta .Bo Ta .Bc Ta "角括弧による囲い" Ta Bo string Bc .No .Brq Ta .Bro Ta .Brc Ta "中括弧による囲い" Ta Bro string Brc .No .Dq Ta .Do Ta .Dc Ta "2 重引用符" Ta Do string Dc .No .Eq Ta .Eo Ta .Ec Ta "囲い文字列 (XX による)" Ta XXstringXX .No .Pq Ta .Po Ta .Pc Ta "括弧による囲い" Ta Po string Pc .No .Ql Ta Ta Ta "クォートされたリテラル" Ta So string Sc もしくは Li string .No .Qq Ta .Qo Ta .Qc Ta "まっすぐな 2 重引用符" Ta Qo string Qc .No .Sq Ta .So Ta .Sc Ta "1 重引用符" Ta So string Sc .El .Ed .Pp .Sq q および .Sq o で終わるマクロはすべてデフォルト幅が 12n です。 . .Bl -tag -width ".Li .Ec , .Eo" .It Li .Eo , .Ec これらのマクロはそれぞれ第 1 引数に囲い始めに使う文字列と 囲い終わりに使う文字列をとります。 .It Li .Es , .En オリジナルの troff プログラムでは、引数の数が 9 つまでという 制限がありましたので、(Eo, Ec とは) 別の 2 つのマクロが -実装されています。現在は非推奨になっています。 +実装されています。 +現在は非推奨になっています。 .Ql .Es は第 1 引数と第 2 引数に左囲い文字列および右囲い文字列を -とります。この文字列は、 +とります。 +この文字列は、 .Ql .En の引数を囲うのに使用されます。 デフォルト幅は、どちらのマクロも 12n です。 .It Li .Eq このマクロの第 1、第 2 引数はそれぞれ囲い始めに使う文字列と 囲い終わりに使う文字列であり、この文字列の後に 囲われる引数が続きます。 .It Li .Ql クォートされたリテラルマクロは troff モードと nroff モードで 違った挙動をします。 .Xr nroff で整形された場合、 クォートされたリテラルは常にクォートされます。 troff で整形された場合、その要素の幅が固定幅文字 3 文字分の幅よりも 小さいときのみクォートされます。 これにより、リテラル (固定幅) フォントへフォントを変更すると 目立たなくなってしまうような短い文字列がより見やすくなります。 .Pp デフォルト幅は 16n です。 .It Li .Pf プレフィックスマクロは第 1 引数と第 2 引数の間の ホワイトスペースをなくします: . .Bl -tag -width ".Li .Pf\ (\ Fa\ name2" -offset indent .It Li ".Pf ( Fa name2" .Pf ( Fa name2 .El .Pp . デフォルト幅は 12n です。 .Pp .Ql .Ns マクロ (後述参照) は同じようにサフィックスに働きます。 .It Li .Ap .Ql .Ap マクロはアポストロフィを追加し、特別なテキストモードから -抜けます。そして +抜けます。 +そして .Ql .No モードで続けます。 .El .Pp . クォートの例: . .Pp .Bl -tag -width ".Li .Bq\ Em\ Greek\ ,\ French\ ." -compact -offset indent .It Li .Aq .Aq .It Li ".Aq Pa ctype.h ) ," .Aq Pa ctype.h ) , .It Li .Bq .Bq .It Li ".Bq Em Greek , French ." .Bq Em Greek , French . .It Li .Dq .Dq .It Li ".Dq string abc ." .Dq string abc . .It Li ".Dq \'^[A-Z]\'" .Dq \'^[A-Z]\' .It Li ".Ql man mdoc" .Ql man mdoc .It Li .Qq .Qq .It Li ".Qq string ) ," .Qq string ) , .It Li ".Qq string Ns )," .Qq string Ns ), .It Li .Sq .Sq .It Li ".Sq string" .Sq string .It Li ".Em or Ap ing" .Em or Ap ing .El .Pp . 囲いマクロの入れ子についての良い例については、 オプションマクロ .Ql .Op を参照してください。 このマクロは上でリストされているような囲いマクロと同じベースの上に 作られています。 .Ql .Xo と .Ql .Xc 拡張引数リストマクロについては後で述べます。 . .Ss "無操作もしくは通常テキストマクロ" . .Ql .No マクロは、マクロコマンド行において整形されては .Em ならない パラメータ用に使用できます。 この英単語 (マクロでなく) をパラメータとして 本当に使いたい場合は、この単語 .Ql \&No に .Ql \e& を足すように注意してください。 .Pp .Dl 使い方: .No Ao 引数 Ac ... .Pp .Bl -tag -width ".Li .No\ test\ Ta\ with\ Ta\ tabs" -compact -offset 15n .It Li ".No test Ta with Ta tabs" .No test Ta with Ta tabs .El .Pp . デフォルト幅は 12n です。 . .Ss "空白なしマクロ" . .Ql .Ns マクロは、現在の位置とマクロの第 1 パラメータとの間に 空白を挿入するのを抑止します。 例えば、フラグと引数の間に空白を含まない古いスタイルの 引数リストを使う場合に便利です: .Pp .Dl "使い方:" ... Ao 引数 Ac \&Ns Oo Ao 引数 Ac Oc ... .Dl " " .Ns Ao 引数 Ac ... .\" 訳注: 2 行目 Dl マクロの第 1 引数の空白の数は 1 行目と一致させる .Pp .Bl -tag -width ".Li .Op\ Fl\ I\ Ns\ Ar\ directory" -compact -offset 15n .It Li ".Op Fl I Ns Ar directory" .Op Fl I Ns Ar directory .El .Pp 注: .Ql .Ns マクロは他のマクロ名が続かなければ、スペースを除去したあとに .Ql .No マクロを常に起動します。 コマンドとして使用される場合 (つまり、 .Sq 使い方 の行での 2 番目の形式です)、 .Ql .Ns マクロは .Ql .No と同一です。 . .Ss "セクションのクロスリファレンス" . .Ql .Sx マクロは同一文書内でのセクションのヘッダへの参照を指定します。 .Pp .Dl 使い方: .Sx Ao セクションの参照 Ac ... .Pp .Bl -tag -width ".Li .Sx\ FILES" -offset 15n .It Li ".Sx FILES" .Sx FILES .El .Pp . デフォルト幅は 16n です。 . .Ss 記号 . 記号体強調マクロは、記号の意味でも伝統的な英語の 使い方においても通常はボールド体マクロとなっています。 .Pp .Dl 使い方: .Sy Ao 記号 Ac ... .Pp .Bl -tag -width ".Li .Sy\ Important\ Notice" -compact -offset 15n .It Li ".Sy Important Notice" .Sy Important Notice .El .Pp . デフォルト幅は 6n です。 . .Ss 数学記号 . 数学記号やそれに似たものについては、このマクロを使用して ください。 .Pp .Dl 使い方: .Ms Ao 数学記号 Ac ... .Pp .Bl -tag -width ".Li .Ms\ sigma" -compact -offset 15n .It Li ".Ms sigma" .Ms sigma .El .Pp . デフォルト幅は 6n です。 . .Ss "参考文献と引用" . 次のマクロは多少なりとも参考文献を扱えるようにと意図したものです。 これらのマクロは、せいぜい .Xr refer 1 スタイルの参考文献のサブセットを手動で 作成しやすくする程度です。 .Pp .Bl -tag -width 6n -offset indent -compact .It Li .Rs 参考文献の開始 (引数はとりません)。 .Sx "SEE ALSO" セクションでは改行を挿入し、参考文献の終了マクロが 読み込まれるまで参考文献の情報を収集します。 .It Li .Re 参考文献の終了 (引数はとりません)。 参考文献が表示されます。 .It Li .%A -参考文献の作者名。1 回の呼び出しにつき、作者名をひとつ指定します。 +参考文献の作者名。 +1 回の呼び出しにつき、作者名をひとつ指定します。 .It Li .%B 書籍のタイトル。 .It Li .%C 市 / 場所 (まだ実装されていません)。 .It Li .%D 日付。 .It Li .%I 発行者/出版社名。 .It Li .%J 定期刊行物の名称。 .It Li .%N 発行番号。 .It Li .%O 追加情報。 .It Li .%P ページ番号。 .It Li .%Q 組織内部、あるいは外部の著者。 .It Li .%R 報告書の名称。 .It Li .%T 記事のタイトル。 .It Li .%V 巻数。 .El .Pp .Ql % で始まるマクロは呼び出し不可能ですが、 通常の方法で複数の引数をとることができます。 パラメータとしては .Ql .Tn -マクロのみ扱います。その他のマクロを使うと +マクロのみ扱います。 +その他のマクロを使うと 奇妙な出力が得られてしまいます。 .Ql .%B および .Ql .%T を .Ql .Rs/.Re 環境の外側では使用することができます。 .Pp 使用例: . .Bd -literal -offset indent \&.Rs \&.%A "Matthew Bar" \&.%A "John Foo" \&.%T "Implementation Notes on foobar(1)" \&.%R "Technical Report ABC-DE-12-345" \&.%Q "Drofnats College, Nowhere" \&.%D "April 1991" \&.Re .Ed .Pp 出力結果 . .Bd -ragged -offset indent .Rs .%A "Matthew Bar" .%A "John Foo" .%T "Implementation Notes on foobar(1)" .%R "Technical Report ABC-DE-12-345" .%Q "Drofnats College, Nowhere" .%D "April 1991" .Re .Ed . .Ss "商標名 (頭字語とタイプ名)" . 商標名マクロは、引数をより小さなフォントで出力します。 意図される使い方は、大文字の頭字語用に小さな大文字フォントを 似せて作ることです。 .Pp .Dl 使い方: .Tn Ao シンボル Ac ... .Pp .Bl -tag -width ".Li .Tn\ ASCII" -compact -offset 15n .It Li ".Tn DEC" .Tn DEC .It Li ".Tn ASCII" .Tn ASCII .El .Pp . デフォルト幅は 10n です。 . .Ss "拡張引数" . .Li .Xo と .Li .Xc マクロによって、 .Ql .It マクロ (後述) についてマクロ境界での引数リストを 拡張することができます。 .Li .Xo と .Li .Xc マクロは囲いを開いたり閉じたりする他のすべてのマクロに -対して同じように実装されている (もちろん文字は挿入しません) +対して同じように実装されている (もちろん文字は挿入しません) ということに注意してください。 つまり、次の例もこれらのマクロには当てはまります。 .Pp 次は、スペーシングをオフにするために 空白モードマクロを使った .Ql .Xo の使用例です。 . .Bd -literal -offset indent \&.Sm off \&.It Xo Sy I Ar operation \&.No \een Ar count No \een \&.Xc \&.Sm on .Ed .Pp . これは以下のような結果になります。 +. .Bd -filled -offset indent .Bl -tag -compact .Sm off .It Xo Sy I Ar operation .No \en Ar count No \en .Xc .Sm on .El .Ed .Pp . 例をもうひとつ: . .Bd -literal -offset indent \&.Sm off \&.It Cm S No / Ar old_pattern Xo \&.No / Ar new_pattern \&.No / Op Cm g \&.Xc \&.Sm on .Ed .Pp . これは以下のような結果になります。 . .Bd -filled -offset indent .Bl -tag -compact .Sm off .It Cm S No \&/ Ar old_pattern Xo .No \&/ Ar new_pattern .No \&/ Op Cm g .Xc .Sm on .El .Ed .Pp . 囲いマクロを使った .Ql .Xo の他の例: 変数の値をテストして下さい。 . .Bd -literal -offset indent \&.It Xo \&.Ic .ifndef \&.Oo \e&! Oc Ns Ar variable Oo \&.Ar operator variable ... \&.Oc Xc .Ed .Pp . 結果は以下の通りです。 . .Bd -filled -offset indent .Bl -tag -width flag -compact .It Xo .Ic .ifndef .Oo \&! Oc Ns Ar variable Oo .Ar operator variable ... .Oc Xc .El .Ed .Pp . . .Sh "ページ構造領域" . .Ss "セクションヘッダ" . 次の .Ql .Sh セクションヘッダマクロは、すべてのマニュアルページで必須のものです。 残りのセクションヘッダはマニュアルページの作者の裁量において、 推奨されているものです。 .Ql .Sh マクロは構文解析されますが、一般的には呼び出し不可能です。 .Ql .Sh を呼び出すときだけは、このマクロは引数として使用することができます。 この場合、 .Ql .Sh 用のデフォルトフォントを再度有効にします。 .Pp デフォルト幅は 8n です。 . .Bl -tag -width ".Li .Sh\ RETURN\ VALUES" .It Li ".Sh NAME" .Ql ".Sh NAME" マクロは必須です。 これが指定されていないと、ヘッダとフッタ、それにデフォルトの ページレイアウトが設定されず、結果はかなり好ましくないものに なるでしょう。 .Sx NAME セクションは最低 3 つの項目からなります。 最初のものは名称マクロ .Ql .Nm であり、マニュアルページのサブジェクトとなります。 2 番目のものは名称説明マクロ .Ql .Nd であり、サブジェクト名を 3 つめの項目、 すなわちその名称の説明と分離します。 説明に割り当てられるスペースは小さいものですので、 できるだけ簡潔で分かりやすいものでなければなりません。 .Pp .Ql .Nd は全ての引数の頭に .Ql - , を印字します。 . .It Li ".Sh LIBRARY" このセクションは、セクション 2 および 3 の関数呼び出しの ためにあります。 このセクションには、 .Ql .Lb マクロ呼び出し 1 つのみが含まれている必要があります。 .Sx "ライブラリ名" を参照してください。 . .It Li ".Sh SYNOPSIS" .Sx SYNOPSIS セクションはそのマニュアルページのサブジェクトとなっている項目の 典型的な使用法を説明します。 .Ql .Nm , .Ql .Cd , あるいは .Ql .Fn です (他には .Ql .Fo , .Ql .Fc , .Ql .Fd , .Ql .Ft のマクロも必要な場合があります)。 関数名マクロ .Ql .Fn はセクション 2 と 3 のマニュアルページにおいて必須のもので、 コマンドと一般名称マクロ .Ql .Nm はセクション 1, 5, 6, 7, 8 で必須の項目です。 セクション 4 のマニュアルでは .Ql .Nm か .Ql .Fd 、もしくは設定デバイス使用法マクロ .Ql .Cd が必要です。 その他のいくつかのマクロが次に示すような書式行を生成するために 必要なことがあります: . .Bd -filled -offset indent .Nm cat .Op Fl benstuv .Op Fl .Ar .Ed .Pp . 次のマクロが使われています: .Pp .Dl ".Nm cat" .Dl ".Op Fl benstuv" .Dl ".Op Fl" .Dl .Ar . .It Li ".Sh DESCRIPTION" ほとんどの場合、 -.Sx "DESCRIPTION" +.Sx DESCRIPTION セクションでの最初のテキストはそのコマンド、関数もしくは ファイルについての短い段落で、オプションの構文リストと それぞれの説明がそれに続きます。 そのようなリストを作成するには .Ql .Bl (リスト開始マクロ)、 .Ql .It (リスト項目マクロ)、 .Ql .El (リスト終了マクロ) を使用します (後述の .Sx リストとカラム セクションを参照)。 . .It Li ".Sh IMPLEMENTATION NOTES" 特定の実装に関する情報はここに置く必要があります。 . .It Li ".Sh RETURN VALUES" セクション 2, 3, 9 の関数の戻り値はここに来る必要があります。 .Ql .Rv を使用して、セクション 2 および 3 のライブラリ関数の .Sx RETURN VALUES セクションを生成することができます。 -.Sx "戻り値" +.Sx "戻り値" の項を参照してください。 .El .Pp . 次の .Ql .Sh セクションヘッダはマニュアルページの好ましいレイアウトの一部であり、 一貫性を保つために適切に使われなければなりません。 これらは使われる順番にリストされています。 . .Bl -tag -width ".Li .Sh\ COMPATIBILITY" .It Li ".Sh ENVIRONMENT" .Sx ENVIRONMENT セクションでは関連する環境変数および それらの振るまいや使用方法に関する手がかりを明らかにする 必要があります。 . .It Li ".Sh FILES" マニュアルページのサブジェクトによって使用されるか生成されるファイルで、 .Sx FILES セクション中でマクロ .Ql .Pa によってリストする必要があります。 . .It Li ".Sh EXAMPLES" 使用例を生成するにはいくつか方法があります。 詳細は後述の .Sx 使用例 セクションを参照してください。 . .It Li ".Sh DIAGNOSTICS" コマンドからの診断メッセージはこのセクションに置く必要があります。 +.Ql .Ex +マクロはほとんどのセクション 1、6、および\~8 コマンドのために +.Sx DIAGNOSTICS +セクションで使われるテキストを作成するために使用されす。 +.Sx "終了ステータス" +を参照してください。 . .It Li ".Sh COMPATIBILITY" 知られている互換性の問題 (例えば、非推奨になったオプションや パラメータ) をここにリストする必要があります。 . .It Li ".Sh ERRORS" 特定のエラーハンドリング、特にライブラリ関数 (マニュアルページのセクション 2, 3, 9) でのエラーハンドリングは ここで説明する必要があります。 .Ql .Er マクロはエラー (errno) を指定するのに使用されます。 . .It Li ".Sh SEE ALSO" .Sx "SEE ALSO" セクションには、そのマニュアルページの題材に関する資料への参照と 他の関連するマニュアルページへのクロスリファレンスが記載されます。 クロスリファレンスは .Ql .Xr マクロによって指定されます。 現在、 .Xr refer 1 スタイルのリファレンスには適合していません。 .Pp クロスリファレンスはセクション番号順、同一セクションにあるものは アルファベット順に並べ、コンマで区切ることを推奨します。 以下に例を示します: .Pp .Xr ls 1 , .Xr ps 1 , .Xr group 5 , .Xr passwd 5 . .It Li ".Sh STANDARDS" コマンドやライブラリ関数やファイルが、 .St -p1003.2 や .St -ansiC のような特定の実装によるものであれば、ここで記述します。 もしコマンドがどの規格にも基づいていなければ、その歴史は .Sx HISTORY のセクションで説明されなければなりません。 . .It Li ".Sh HISTORY" 特定の規格に基づいていないコマンドは、 このセクションでその歴史の概要を説明する必要があります。 . .It Li ".Sh AUTHORS" クレジットはここに置く必要があります。 人物名を指定するには .Ql .An マクロを使用する必要があります。 . .It Li ".Sh BUGS" あきらかな問題はここで記述します。 .El .Pp . ユーザ指定の .Ql .Sh セクションを追加することができます。 例えば、このセクションは以下のように設定されています。 . .Bd -literal -offset 15n \&.Sh "ページ構造領域" .Ed . .Ss "サブセクションヘッダ" . サブセクションヘッダはセクションヘッダとまったく同じ文法を しています。 .Ql .Ss は構文解析されますが、一般的に呼び出し不可能です。 このマクロは、 .Ql .Ss -の呼び出し時にのみ引数として使用できます。このとき、 +の呼び出し時にのみ引数として使用できます。 +このとき、 .Ql .Ss のデフォルトフォントが再度有効になります。 .Pp デフォルト幅は 8n です。 . .Ss "段落と行スペース" . .Bl -tag -width ".Li .Pp" .It Li .Pp .Ql .Pp 段落コマンドは必要な場合に行スペースを指定するために使われます。 このマクロは .Ql .Sh マクロや .Ql .Ss マクロの後、ならびに .Ql .Bl マクロや .Ql .Bd マクロの前では必要ありません (いずれのマクロも .Fl compact フラグが指定されていなければ垂直方向の距離を宣言します)。 .Pp -このマクロは呼び出し不可能であり、構文解析もされません。そして -引数をとりません。別名は +このマクロは呼び出し不可能であり、構文解析もされません。 +そして引数をとりません。 +別名は .Ql .Lp です。 .El . .\" XXX . .\" This worked with version one, need to redo for version three .\" .Pp .\" .Ds I .\" .Cw (ax+bx+c) \ is\ produced\ by\ \& .\" .\".Cw (ax+bx+c) \&.Va_by_) \&_and_\& \&[?/]m_b1_e1_f1[?/]\& .\" .Cl Cx \t\t .\" .Li \&.Cx\ ( .\" .Cx .\" .Cl Cx \t\t .\" .Li \&.Va ax .\" .Cx .\" .Cl Cx \t\t .\" .Li \&.Sy \+ .\" .Cx .\" .Cl Cx \&(\& .\" .Va ax .\" .Cx + .\" .Va by .\" .Cx + .\" .Va c ) .\" .Cx \t .\" .Em is produced by .\" .Cx \t .\" .Li \&.Va by .\" .Cx .\" .Cl Cx \t\t .\" .Li \&.Sy \+ .\" .Cx .\" .Cl Cx \t\t .\" .Li \&.Va c ) .\" .Cx .\" .Cl Cx \t\t .\" .Li \&.Cx .\" .Cx .\" .Cw .\" .De .\" .Pp .\" This example shows the same equation in a different format. .\" The spaces .\" around the .\" .Li \&+ .\" signs were forced with .\" .Li \e : .\" .Pp .\" .Ds I .\" .Cw (ax\ +\ bx\ +\ c) \ is\ produced\ by\ \& .\" .\".Cw (ax+bx+c) \&.Va_by_) \&_and_\& \&[?/]m_b1_e1_f1[?/]\& .\" .Cl Cx \t\t .\" .Li \&.Cx\ ( .\" .Cx .\" .Cl Cx \t\t .\" .Li \&.Va a .\" .Cx .\" .Cl Cx \t\t .\" .Li \&.Sy x .\" .Cx .\" .Cl Cx \t\t .\" .Li \&.Cx \e\ +\e\ \e& .\" .Cx .\" .Cl Cx \&(\& .\" .Va a .\" .Sy x .\" .Cx \ +\ \& .\" .Va b .\" .Sy y .\" .Cx \ +\ \& .\" .Va c ) .\" .Cx \t .\" .Em is produced by .\" .Cl Cx \t\t .\" .Li \&.Va b .\" .Cx .\" .Cl Cx \t\t .\" .Li \&.Sy y .\" .Cx .\" .Cl Cx \t\t .\" .Li \&.Cx \e\ +\e\ \e& .\" .Cx .\" .Cl Cx \t\t .\" .Li \&.Va c ) .\" .Cx .\" .Cl Cx \t\t .\" .Li \&.Cx .\" .Cx .\" .Cw .\" .De .\" .Pp .\" The incantation below was .\" lifted from the .\" .Xr adb 1 .\" manual page: .\" .Pp .\" .Ds I .\" .Cw \&[?/]m_b1_e1_f1[?/]\& is\ produced\ by .\" .Cl Cx \t\t .\" .Li \&.Cx Op Sy ?/ .\" .Cx .\" .Cl Cx \t\t .\" .Li \&.Nm m .\" .Cx .\" .Cl Cx Op Sy ?/ .\" .Nm m .\" .Ad \ b1 e1 f1 .\" .Op Sy ?/ .\" .Cx \t .\" .Em is produced by .\" .Cx \t .\" .Li \&.Ar \e\ b1 e1 f1 .\" .Cx .\" .Cl Cx \t\t .\" .Li \&.Op Sy ?/ .\" .Cx .\" .Cl Cx \t\t .\" .Li \&.Cx .\" .Cx .\" .Cw .\" .De .\" .Pp . .Ss キープ . 現在実装されているキープは単語に対するものだけです。 マクロは .Ql .Bk (キープ開始) と .Ql .Ek (キープ終了) です。 現在 .Ql .Bk が受け付けるオプションは .Fl words のみで (オプションを何も与えていなければこれがデフォルトでもあります) オプションの途中で改行が入らないようにするのに便利です。 -make コマンド行の引数を生成する例 ( -.Sx この名前には何が +make コマンド行の引数を生成する例 +.Pf ( Sx この名前には何が の項を参照) において、キープは .Xr nroff がフラグと引数を別の行に分けないように使われています。 .Pp いずれのマクロも呼び出し不可能であり、構文解析もされません。 .Pp キープマクロについてはもっと作業をする必要があります。 特に .Fl line オプションは追加する必要があるでしょう。 . .Ss "例示とディスプレイ" . ディスプレイには 7 つのタイプがあります。 .Pp .Bl -tag -width ".Li .D1" .It Li .D1 (D-いちです) インデントされたテキストを 1 行表示します。 このマクロは構文解析されますが、呼び出し不可能です。 .Pp .D1 Fl ldghfstru .Pp これは次の指定で生成されたものです: .Li ".D1 Fl ldghfstru" . .It Li .Dl (D-エルです) インデントされた .Em リテラル テキストを 1 行表示します。 .Ql .Dl マクロの例は本ファイル中にわたって使われています。 これによって 1 行のテキストのインデント (表示) が可能になります。 デフォルトフォントは固定幅 (リテラル) に設定されます。 .Ql .Dl は構文解析されますが、呼び出し不可能です。 .Pp .Dl % ls -ldg /usr/local/bin .Pp これは、次の指定で生成されたものです: .Li ".Dl % ls -ldg /usr/local/bin" . .It Li .Bd ディスプレイ開始。 .Ql .Bd ディスプレイは .Ql .Ed マクロで終了しなければなりません。 これは、次の書式をとります: .Pp .Bd -ragged -compact .Bl -tag -width ".Li .Bd" -offset indent .It Li .Bd Xo .Bro \-literal | \-filled | \-unfilled | \-ragged | \-centered Brc .Oo \-offset Ao 文字列 Ac Oc Oo \-file Ao ファイル名 Ac Oc Oo \-compact Oc Xc .El .Ed .Pp . .Bl -tag -width ".Fl file Ao Ar ファイル名 Ac " -compact .It Fl ragged 行詰めされますが、右マージンは調整しません (左マージンのみです)。 .It Fl centered 現在の左マージンと右マージン間の中央線です。 線それぞれが中央揃えになるということに注意してください。 .It Fl unfilled -行詰めしません。テキストのブロックを入力されたままの状態で -表示します。改行もユーザが指定した通りに使われます。 +行詰めしません。 +テキストのブロックを入力されたままの状態で表示します。 +改行もユーザが指定した通りに使われます。 このため、何の警告メッセージも出さずに長過ぎる行を 生成する可能性があります。 .It Fl filled 行詰めされたブロックを表示します。 テキストブロックが整形されます (つまり、 テキストは左右どちら側にも揃えられます)。 .It Fl literal リテラルフォント (通常固定幅) でブロックを表示します。 ソースコードや、単純にタブもしくは空白で整えられた テキストには便利です。 .It Fl file Ao Ar ファイル名 Ac .Fl file フラグに続いた名前を持ったファイルが読み込まれ、 指定されたディスプレイタイプで .Ql .Bd と .Ql .Ed マクロで囲まれたデータよりも前に表示されます。 ファイル中の .Xr troff/ Ns Nm \-mdoc コマンドはどんなものでも処理されます。 .It Fl offset Ao Ar 文字列 Ac .Fl offset が以下の文字列のいずれかとともに指定されていると、 その文字列は次のテキストのブロックのインデントのレベルを示すものとして 解釈されます。 . .Pp .Bl -tag -width ".Ar indent-two" -compact .It Ar left ブロックを現在の左マージンに揃えます。 これは .Ql .Bd のデフォルトのモードです。 .It Ar center ブロックを中央揃えにします。 残念ながら現時点では、 単にブロックの左側を仮想的な中央マージンに揃えるだけです。 .It Ar indent デフォルトのインデント値もしくはタブの分だけインデントします。 デフォルトのインデント値は .Ql .D1 および .Ql .Dl マクロでも使われていますので、この 2 つのディスプレイと 行が揃うことが保証されています。 インデント値は通常 6n つまり約 2/3 インチ (固定幅文字 6 つ分) です。 .It Ar indent-two デフォルトのインデント値の 2 倍分インデントします。 .It Ar right これはブロックをページの右端から約 2 インチ離して .Em 左 揃えします。 このマクロはちゃんと動作する必要があるのですが、 .Xr troff ではまったくちゃんと動作してくれていません。 .El .Pp . .Ao 文字列 Ac がそれ以外で正しい数値表現をしている場合 -.Pf ( Sq Em u -.Em 以外のスケール指示子を伴う)、 +.Pf ( Sq Em u +.Em 以外のスケール指示子を伴う ) +、 インデント用にその値を使用します。 スケール指示子のなかで最も役に立つものは .Sq m および .Sq n -です。これらはいわゆる +です。 +これらはいわゆる .Em \&Em と .Em "En square" を指定します。 これらはそれぞれ、現在のフォントでの文字 .Sq m および文字 .Sq n の幅とほぼ同じです ( nroff の出力については、 どちらのスケール指示子でも同じ値が得られます )。 .Ao 文字列 Ac が数値表現をしていない場合、文字列は .Nm \-mdoc マクロ名であるかどうか検査され、このマクロに関連する デフォルトのオフセット値が使われます。 最終的にすべてのテストが失敗した場合 the width of .Ao 文字列 Ac の幅 (固定幅フォントでのタイプセット) がオフセットと見なされます。 .It Fl compact ディスプレイを開始するときに垂直方向の空白を挿入しないようにします。 .El . .It Li .Ed ディスプレイの終了 (引数はとりません)。 .El . .Ss "リストとカラム" . リスト開始マクロ .Ql .Bl で開始できるリストには何種類かあります。 リスト中の項目は項目マクロ .Ql .It で指定され、各リストは .Ql .El マクロで終了しなければなりません。 リストはリスト自身やディスプレイの中で入れ子にすることができます。 リスト中でカラムを使ったり、カラムの中でリストを使ったりすることに ついては検証されていません。 .Pp さらに、タグ幅、リストのオフセット、コンパクトの度合 (項目間の空白行が許されているかどうか) のような リストの属性をいくつか指定することができます。 本ドキュメントのほとんどはタグ .Pf ( Fl tag ) スタイルリストで整形されています。 .Pp このマクロは次の文法規則を持っています: . .Pp .Bd -ragged -compact .Bl -tag -width ".Li .Bl" -offset indent -compact .It Li .Bl Xo .Bro \-hang | \-ohang | \-tag | \-diag | \-inset Brc .Oo \-width Ao 文字列 Ac Oc .Oo \-offset Ao 文字列 Ac Oc Oo \-compact Oc Xc .It Li .Bl Xo .No \-column Oo \-offset Ao 文字列 Ac Oc .Ao 文字列1 Ac Ao 文字列2 Ac ... Xc .It Li .Bl Xo .Bro \-item | \-enum Oo \-nested Oc | \-bullet | \-hyphen | \-dash Brc .Oo \-offset Ao 文字列 Ac Oc Oo \-compact Oc Xc .El .Ed .Pp . 次に、このリストタイプの詳細な解説を行います。 . .Pp .Bl -tag -width ".Fl column" -compact .It Fl bullet ビュレットリストです。 . .Bd -literal -offset indent \&.Bl -bullet -offset indent -compact \&.It 1 つ目のビュレットはここにきます。 \&.It 2 つ目のビュレットはここにきます。 \&.El .Ed .Pp . 生成結果は次の通りです: . .Pp .Bl -bullet -offset indent -compact .It 1 つ目のビュレットはここにきます。 .It 2 つ目のビュレットはここにきます。 .El .Pp . .It Fl dash No ( または Fl hyphen ) ダッシュ文字によるリストです。 . .Bd -literal -offset indent \&.Bl -dash -offset indent -compact \&.It 1 つ目のダッシュはここにきます。 \&.It 2 つ目のダッシュはここにきます。 \&.El .Ed .Pp . 生成結果は次の通りです: . .Pp .Bl -dash -offset indent -compact .It 1 つ目のダッシュはここにきます。 .It 2 つ目のダッシュはここにきます。 .El .Pp . .It Fl enum 箇条書きリストです。 . .Bd -literal -offset indent \&.Bl -enum -offset indent -compact \&.It 1 つ目の項目はここにきます。 \&.It 2 つ目の項目はここにきます。 \&.El .Ed .Pp . 生成結果は次の通りです: . .Pp .Bl -enum -offset indent -compact .It 1 つ目の項目はここにきます。 .It 2 つ目の項目はここにきます。 .El .Pp . 箇条書きリストを入れ子にしたい場合、 .Fl nested フラグを使用してください (第 2 レベルのリストが開始されます): . .Bd -literal -offset indent \&.Bl -enum -offset indent -compact \&.It 1 つ目の項目はここにきます。 \&.Bl -enum -nested -compact \&.It 2 つ目の項目はここにきます。 \&.It 3 つ目の項目はここにきます。 \&.It \&.El \&.It 4 つ目の項目はここにきます。 \&.El .Ed .Pp . 生成結果は次の通りです: . .Pp .Bl -enum -offset indent -compact .It 1 つ目の項目はここにきます。 .Bl -enum -nested -compact .It 2 つ目の項目はここにきます。 .It 3 つ目の項目はここにきます。 .El .It 4 つ目の項目はここにきます。 .El .Pp . .It Fl item リストの印をつけない .Fl item タイプのリストです。 . .Bd -literal -offset indent \&.Bl -item -offset indent \&.It 1 つ目の項目はここにきます。 1 つ目の項目はここにきます。 1 つ目の項目はここにきます。 \&.It 2 つ目の項目はここにきます。 2 つ目の項目はここにきます。 2 つ目の項目はここにきます。 \&.El .Ed .Pp . 生成結果は次の通りです: . .Pp .Bl -item -offset indent .It 1 つ目の項目はここにきます。 1 つ目の項目はここにきます。 1 つ目の項目はここにきます。 .It 2 つ目の項目はここにきます。 2 つ目の項目はここにきます。 2 つ目の項目はここにきます。 .El .Pp . .It Fl tag タグつきリストです。 タグ幅を指定するには .Fl width を使用してください。 . .Pp .Bl -tag -width "PPID" -compact -offset indent .It SL プロセスが sleep している時間 (ブロックされた秒数) .It PAGEIN -そのプロセスによって、まだメモリにロードされていないページへの参照が -起こることにより生じたディスク -.Tn I/O +そのプロセスによって、まだメモリにロードされていないページ +への参照が起こることにより生じたディスク +.Tn I/O の回数 .It UID 数値表記によるプロセス所有者のユーザ ID .It PPID 数値表記による親プロセスの ID、プロセスの優先度 (割り込み不可の待機状態のときには、正でない値になる) .El .Pp . 元のテキストは次の通りです: . .Bd -literal -offset indent \&.Bl -tag -width "PPID" -compact -offset indent \&.It SL プロセスが sleep している時間 (ブロックされた秒数) \&.It PAGEIN -そのプロセスによって、まだメモリにロードされていないページへの参照が -起こることにより生じたディスク -\&.Tn I/O +そのプロセスによって、まだメモリにロードされていないページ +への参照が起こることにより生じたディスク +\&.Tn I/O の回数 \&.It UID 数値表記によるプロセス所有者のユーザ ID \&.It PPID 数値表記による親プロセスの ID、プロセスの優先度 (割り込み不可の待機状態のときには、正でない値になる) \&.El .Ed .Pp . .It Fl diag 診断リストはセクション 4 の診断リストを生成するもので、 呼び出し可能なマクロが無視されることを除き、inset リストと似ています。 フラグ .Fl width は、この文脈では意味がありません。 .Pp 使用例: . .Bd -literal -offset indent \&.Bl -diag \&.It ここで Sy を使うことはできません。 このメッセージはすべて出力されます。 \&.El .Ed .Pp . 生成結果 . .Bl -diag .It ここで Sy を使うことはできません。 このメッセージはすべて出力されます。 .El .Pp . .It Fl hang ぶら下がりタグつきリストです。 . .Bl -hang -offset indent .It Em Hanged ラベル幅よりもラベルが小さい場合には ぶら下げられたラベルはタグつきリストと同じように見えます。 .It Em Longer hanged list labels ラベル幅より長いぶら下がりリストのラベルは、 タグつき段落ラベルとは違い、段落に溶け込みます。 .El .Pp 以上の文章を生成した、整形前のテキストは 次の通りです: . .Bd -literal -offset indent \&.Bl -hang -offset indent \&.It Em Hanged ラベル幅よりもラベルが小さい場合には ぶら下げられたラベルはタグつきリストと同じようにみえます。 \&.It Em Longer Hanged list labels ラベル幅より長いぶら下がりリストのラベルは、 タグつき段落ラベルとは違い、段落に溶け込みます。 \&.El .Ed .Pp . .It Fl ohang オーバハングタグ (overhanging tags) を用いたリストは 項目に対してインデントを使いません。 タグは別の行に出力されます。 .Pp .Bl -ohang -offset indent .It Sy SL プロセスが sleep している時間 (ブロックされた秒数) .It Sy PAGEIN そのプロセスによって、まだメモリにロードされていないページへの参照が 起こることで生じたディスク -.Tn I/O +.Tn I/O の回数 .It Sy UID 数値表記によるプロセス所有者のユーザ ID .It Sy PPID 数値表記による親プロセスの ID、プロセスの優先度 (割り込み不可の待機状態のときには、正でない値になる) .El .Pp . 元のテキストは次の通りです: . .Bd -literal -offset indent \&.Bl -ohang -offset indent \&.It Sy SL プロセスが sleep している時間 (ブロックされた秒数) \&.It Sy PAGEIN -そのプロセスによって、まだメモリにロードされていないページへの参照が -起こることで生じたディスク -\&.Tn I/O +そのプロセスによって、まだメモリにロードされていないページ +への参照が起こることで生じたディスク +\&.Tn I/O の回数 \&.It Sy UID 数値表記によるプロセス所有者のユーザ ID \&.It Sy PPID 数値表記による親プロセスの ID、プロセスの優先度 (割り込み不可の待機状態のときには、正でない値になる) \&.El .Ed .Pp . .It Fl inset 次は、inset ラベルの例です: .Bl -inset -offset indent .It Em tag タグリスト (タグ段落とも呼びます) は バークレーのマニュアルで使われている最も一般的な 種類のリストです。 後で述べるように、 .Fl width 属性を使用してください。 .It Em diag 診断リストはセクション 4 の診断リストを生成し、 呼び出し可能なマクロを無視するという点を除けば inset リストと似ています。 .It Em hang ぶら下がりラベルは気分の問題です。 .It Em ohang オーバハングラベルは空白に制限がある場合には良いです。 .It Em inset inset ラベルは段落ブロックを制御するのに便利で、 .Nm \-mdoc マニュアルを別のフォーマットに変換するのに有用です。 .El .Pp 上の例を生成したソーステキストはこうなっています: . .Bd -literal -offset indent \&.Bl -inset -offset indent \&.It Em tag タグリスト (タグ段落とも呼びます) は バークレーのマニュアルで使われている最も一般的な 種類のリストです。 後で述べるように、 \&.Fl width 属性を使用してください。 \&.It Em diag 診断リストはセクション 4 の診断リストを生成し、 呼び出し可能なマクロを無視するという点を除けば inset リストと似ています。 \&.It Em hang ぶら下がりラベルは気分の問題です。 \&.It Em ohang オーバハングラベルは空白に制限がある場合には良いです。 \&.It Em inset inset ラベルは段落ブロックを制御するのに便利で、 \&.Nm \-mdoc マニュアルを別のフォーマットに変換するのに有用です。 \&.El .Ed .Pp . .It Fl column この種類のリストは複数カラムを生成します。 カラムの数および各カラムの幅は .Fl column リストへの引数、 .Aq Ar string1 , .Aq Ar string2 等によって決定されます。 .Aq Ar stringN が .Ql .\& (ドット) で開始し直後に有効な .Nm \-mdoc マクロ名が続く場合、 .Aq Ar stringN を解釈して結果の幅を使用します。 そうでない場合、 .Aq Ar stringN (固定幅フォントでのタイプセット) は .Ar N 番目の桁の幅になります。 .Pp .Ql .It 引数はそれぞれ構文解析され行を生成します。 行中の各列はタブや .Ql .Ta マクロで分けられた引数です。 .Pp 次の表、 . .Bl -column -offset indent ".Sy 文字列" ".Sy nroff" ".Sy troff" .It Sy 文字列 Ta Sy nroff Ta Sy troff .It Li <= Ta <= Ta \*(<= .It Li >= Ta >= Ta \*(>= .El .Pp . は次のようにして生成されています: . -.Bd -literal -offset indent +.Bd -literal \&.Bl -column -offset indent ".Sy 文字列" ".Sy nroff" ".Sy troff" \&.It Sy 文字列 Ta Sy nroff Ta Sy troff \&.It Li <= Ta <= Ta \e*(<= \&.It Li >= Ta >= Ta \e*(>= \&.El .Ed .El .Pp . その他のキーワード: . .Bl -tag -width ".Fl indent Ao Ar 文字列 Ac" .It Fl width Ao Ar 文字列 Ac .Aq Ar 文字列 が .Ql .\& (ドット) で開始し直後に有効な .Nm \-mdoc マクロ名が続く場合、 .Aq Ar 文字列 を解釈し、その結果の幅を使います。 本ドキュメントのほとんどすべてのリストは このオプションを使用しています。 .Pp 使用例: . .Bd -literal -offset indent \&.Bl -tag -width ".Fl test Ao Ar 文字列 Ac" \&.It Fl test Ao Ar 文字列 Ac これは、 \&.Fl width フラグをタグリストと一緒に使うとどのように 働くかを見るためのもっと長い文です。 \&.El .Ed .Pp . 生成結果: . .Bl -tag -width ".Fl test Ao Ar 文字列 Ac" .It Fl test Ao Ar 文字列 Ac これは、 .Fl width フラグをタグリストと一緒に使うとどのように 働くかを見るためのもっと長い文です。 .El .Pp . .Ao 文字列 Ac が解釈される前に現在の .Nm \-mdoc の状態が保存されることに注意してください。 文字列が解釈された後ですべての変数が再度復元されます。 しかし、ボックス (囲いに使用される) は .Tn GNU .Xr troff 1 -では保存されません。結果としては、醜いエラーを防ぐためには -引数は常に +では保存されません。 +結果としては、醜いエラーを防ぐためには引数は常に .Em 平衡がとれて いなくてはなりません。 例えば、本当に開き山括弧だけが必要である場合には .Ql ".Ao Ar 文字列" と書いてはだめで、代わりに .Ql ".Ao Ar 文字列 Xc" と書かなくてはなりません。 .Pp そうでない場合、 .Aq Ar 文字列 が正当な数値表現である場合 -.Sq ( Em u -.Em 以外のスケール指示子を伴う)、 +.Sq ( Em u +.Em 以外のスケール指示子を伴う ) +、 インデント用にその値を使用します。 最も有用なスケール指示子は .Sq m と .Sq n です。 これらはいわゆる .Em \&Em および -.Em "En square" +.Em "En square" を指定します。 これらはそれぞれ、現在のフォントでの文字 .Sq m および文字 .Sq n の幅とほぼ同じです (nroff の出力については、 どちらのスケール指示子でも同じ値が得られます)。 .Aq Ar 文字列 が数値表現をしていない場合、文字列は .Nm \-mdoc マクロ名であるかどうか検査され、このマクロに関連する デフォルトのオフセット値が使われます。 最終的にすべてのテストが失敗した場合 .Aq Ar 文字列 の幅 (固定幅フォントでのタイプセット) がオフセットと見なされます。 .Pp タグリストタイプ用に幅が指定されていない場合、 .Ql .It が起動される度に適切な幅を決定しようと試みます。 .Ql .It の第 1 引数が呼び出し可能なマクロである場合、 そのマクロのデフォルト幅が使われます。 そうでなければ、 .Ql .No のデフォルト幅が使われます。 -.Pp .It Fl offset Ao Ar 文字列 Ac .Aq Ar 文字列 が .Ar indent である場合、デフォルトのインデント値 (通常 6n に設定されており、 .Ql .Dl または .Ql .Bd で使われる値と似ています) が使われます。 .Aq Ar 文字列 が正当な数値表現である場合 .Pf ( Sq Em u -以外のスケール指示子を伴う )、 +.Em 以外のスケール指示子を伴う ) +、 その値をインデントに使用します。 最も有用なスケール指示子は .Sq m と .Sq n であり、これらはいわゆる .Em \&Em および .Em "En square" です。 これらはそれぞれ、それぞれ現在のフォントでの .Sq m と .Sq n の幅とほぼ同じです (nroff の出力については、 どちらのスケール指示子も同じ値をとります)。 .Ao 文字列 Ac が数値表現でない場合、その文字列が .Nm \-mdoc -のマクロ名であるかどうか検査され、このマクロに関連する +のマクロ名であるかどうか検査され、このマクロに関連する デフォルトのオフセット値が使われます。 最終的にすべてのテストが失敗した場合、 .Aq Ar 文字列 の幅 (固定幅フォントでのタイプセット) がオフセットとして とられます。 .It Fl compact リストの前およびリスト項目間に垂直方向の空白を挿入しないように します。 .El . . .Sh "その他のマクロ" . ここには、いままでのセクションにはうまく当てはまらなかった 残りのマクロのリストがあります。 次のマクロに対しては本物の使用例を見つけられませんでした。 それは .Ql .Me と .Ql .Ot -です。この 2 つについても完璧を期するためにここに -文書化はしています。もしこの 2 つのマクロの +です。 +この 2 つについても完璧を期するためにここに +文書化はしています。 +もしこの 2 つのマクロの 適切な使い方をご存知であれば .Mt bug-groff@gnu.org までメールを送ってください (例つきで)。 . .Bl -tag -width ".Li .Bt" .It Li .Bt は . .Bd -ragged -offset indent .Bt .Ed -.Pp +.\" 次の .sp は翻訳で追加。 +.sp を表示します。 .Pp このマクロは呼び出し不可能であり、構文解析もされません。 また引数もとりません。 . .It Li .Fr .Pp .Dl 使い方: .Fr Ao 関数の戻り値 Ac ... .Pp このマクロは使わないでください。 このマクロは戻り値 (通常は数字 1 個) の直前での 改行を許してしまいます。 印刷時の振る舞いとしては悪いことです。 直前の単語と戻り値とを結合させるには .Ql \e~ を使用してください。 . .It Li .Hf (ヘッダ) ファイルをそのまま含めるにはこのマクロを 使ってください。 このマクロは、最初に .Ql File: とファイル名を表示し、その後で -.Ao ファイル Ac +.Ao ファイル Ac の内容を表示します。 .Pp .Dl 使い方: .Hf Ao ファイル Ac .Pp このマクロは呼び出し不可能であり、構文解析もされません。 . .It Li .Lk 将来書かれる予定です。 . .It Li .Me 正確な使用方法は分かりません。 .Nm \-mdoc ソースファイル中の記述では -.Dq "メニューエントリ" +.Dq "メニューエントリ" となっています。 .Pp デフォルト幅は 6n です。 . .It Li .Mt 将来書かれる予定です。 . .It Li .Ot 正確な使用方法は分かりません。 .Nm \-mdoc ソースファイル中の記述では -.Dq "古い関数タイプ (fortran)" +.Dq "古い関数タイプ (fortran)" となっています。 . .It Li .Sm 空白モードを有効に (トグル) します。 .Pp .Dl 使い方: .Sm Oo on | off Oc ... .Pp 空白モードが off の場合、マクロ引数の間に空白は -挿入されません。引数なしで呼ばれた場合 (あるいは -次の引数が +挿入されません。 +引数なしで呼ばれた場合 (あるいは次の引数が .Ql on でも .Ql off でもない場合) .Ql .Sm マクロは空白モードに入ります。 . .It Li .Ud マクロは . .Bd -ragged -offset indent .Ud .Ed -.Pp +.\" 次の .sp は翻訳で追加。 +.sp を表示します。 .Pp このマクロは呼び出し不可能であり、構文解析もされません。 また引数もとりません。 .El . . .Sh "定義済み文字列" . 次の文字列が定義済みです: .Pp .Bl -column 文字列 infinity "troff " "まっすぐなダブルクォート" -offset indent .It Sy 文字列 Ta Sy nroff Ta Sy troff Ta Sy 意味 .It Li <= Ta <= Ta \*[<=] Ta "以下" .It Li >= Ta >= Ta \*[>=] Ta "以上" .It Li Rq Ta '' Ta \*[Rq] Ta "右側のダブルクォート" .It Li Lq Ta `` Ta \*[Lq] Ta "左側のダブルクォート" .It Li ua Ta ^ Ta \*[ua] Ta "上向き矢印" .It Li aa Ta \' Ta \*[aa] Ta "アキュートアクセント" .It Li ga Ta \` Ta \*[ga] Ta "グレーブアクセント" .It Li q Ta \&" Ta \*[q] Ta "まっすぐなダブルクォート" .It Li Pi Ta pi Ta \*[Pi] Ta "ギリシャ語のパイ" .It Li Ne Ta != Ta \*[Ne] Ta "不等号" .It Li Le Ta <= Ta \*[Le] Ta "以下" .It Li Ge Ta >= Ta \*[Ge] Ta "以上" .It Li Lt Ta < Ta \*[Lt] Ta "小なり" .It Li Gt Ta > Ta \*[Gt] Ta "大なり" .It Li Pm Ta +\- Ta \*[Pm] Ta "プラスマイナス" .It Li If Ta infinity Ta \*[If] Ta "無限" .It Li Am Ta \*[Am] Ta \*[Am] Ta "アンパサンド" .It Li Na Ta \*[Na] Ta \*[Na] Ta "非数値" .It Li Ba Ta \*[Ba] Ta \*[Ba] Ta "垂直線" .El .Pp カラムの名前 .Sy nroff と .Sy troff は少々誤解を招くものです。 .Sy nroff は .Tn ASCII 文字を表示しますが、 .Sy troff では利用可能なもののうち一番良いグリフ形式を 表示します。 例えば、Unicode を使用可能にした .Tn TTY デバイスはすべての文字列に対して適切なグリフ表現を 持っていますが、それに対して Latin1 に対して機能を強化した .Tn TTY デバイスはプラスマイナス記号しか持っていません。 .Pp 文字を 2 つ含んだ文字列名は -.Ql \e*(xx +.Ql \e*(xx として表記できます。 文字を 1 文字だけ含んだ文字列名は -.Ql \e*x +.Ql \e*x と表記できます。 どのような長さの文字列名に対しても、一般的な文法は .Ql \e*[xxx] となります ( これは .Tn GNU .Xr troff 1 拡張です)。 . . \# \#===================================================================== \# .Sh 診断 . 以前のバージョンの .Nm \-mdoc パッケージでは利用可能だったデバッグ用マクロ .Ql .Db -は取り除かれました。なぜなら、 +は取り除かれました。 +なぜなら、 .Tn GNU .Xr troff 1 ではパラメータをチェックするのにもっと良いファシリティを -提供しているからです。さらに、このマクロパッケージには +提供しているからです。 +さらに、このマクロパッケージには エラーや警告メッセージが多数追加されており、よりロバストで 饒舌なものになっています。 .Pp 唯一残ったデバッグ用マクロは .Ql .Rd であり、これはすべてのグローバルレジスタならびに文字列の レジスタダンプを出力するものです。 通常のユーザが使う必要は決してないでしょう。 . . .Sh "GROFF, TROFF, および NROFF を使用した整形" . デフォルトでは、このパッケージでは .Sq latin1 や .Sq unicode のような .Tn TTY デバイスで表示する場合には改ページやヘッダ、フッタは 禁止されており、マニュアルをオンラインで効率良く 見ることができるようになっています。 この振る舞いは、 .Xr groff 1 を呼んでいるときにレジスタ .Ql cR に 0 を指定することで変更することができます (例えば、 .Tn TTY 出力のハードコピーを作成したいときなど)。 .Pp .Dl groff -Tlatin1 -rcR=0 -mdoc foo.man > foo.txt .Pp 両面印刷用には、レジスタ .Ql D を 1 に設定してください: .Pp .Dl groff -Tps -rD1 -mdoc foo.man > foo.ps .Pp ドキュメントのフォントサイズを 11pt や 12pt に変更したい 場合は、レジスタ .Ql S をそれに合わせて設定してください: .Pp .Dl groff -Tdvi -rS11 -mdoc foo.man > foo.dvi .Pp レジスタ .Ql S は .Tn TTY デバイスに対しては無視されます。 -. -. .Pp 行およびタイトルの長さを変えたい場合、それぞれレジスタ .Ql LL と .Ql LT を設定してください: .Pp .Dl groff -Tutf8 -rLL=100n -rLT=100n -mdoc foo.man | less .Pp 設定されていない場合、TTY デバイスに対してはレジスタ値は 78n に、 その他の場合 6.5i になります。 +. +. .Sh 関連ファイル . .Bl -tag -width mdoc/doc-ditroff -compact .It Pa doc.tmac 主なマニュアル用マクロパッケージです。 .It Pa mdoc.tmac .Pa doc.tmac を呼ぶラッパファイルです。 .It Pa mdoc/doc-common 共通する文字列、定義、および印刷出力に関連する項目です。 .It Pa mdoc/doc-nroff .Tn TTY 出力デバイス用に使用される定義です。 .It Pa mdoc/doc-ditroff その他すべてのデバイス用に使用される定義です。 .It Pa mdoc.local ローカルマシンでの追加項目およびカスタマイズ項目です。 .It Pa andoc.tmac このファイルは .Nm \-mdoc パッケージと .Nm \-man パッケージのどちらを使用すべきかをチェックします。 .El . . .Sh "関連項目" . .Xr groff 1 , .Xr man 1 , .Xr troff 1 , .Xr groff_man 7 . . .Sh バグ . セクション 3f はヘッダルーチンには追加されていません。 .Pp .Ql \&.Nm .Sx NAME セクションにおいては、フォントを変更するべきです。 .Pp 行の長さが短すぎる場合に行が分割されるのを防ぐために .Ql \&.Fn がチェックを行う必要があります。 ときどき、最後の括弧が分割されることがあり、 行詰めモードであるときにおかしな結果になることがあります。 .Pp リストマクロおよびディスプレイマクロは何のキープも 行いませんが、これはキープを行うべきです。 .\" Note what happens if the parameter list overlaps a newline .\" boundary. .\" to make sure a line boundary is crossed: .\" .Bd -literal .\" \&.Fn struct\e\ dictionarytable\e\ *dictionarylookup struct\e\ dictionarytable\e\ *tab[] .\" .Ed .\" .Pp .\" produces, nudge nudge, .\" .Fn struct\ dictionarytable\ *dictionarylookup char\ *h struct\ dictionarytable\ *tab[] , .\" .Fn struct\ dictionarytable\ *dictionarylookup char\ *h struct\ dictionarytable\ *tab[] , .\" nudge .\" .Fn struct\ dictionarytable\ *dictionarylookup char\ *h struct\ dictionarytable\ *tab[] . .\" .Pp .\" If double quotes are used, for example: .\" .Bd -literal .\" \&.Fn \*qstruct dictionarytable *dictionarylookup\*q \*qchar *h\*q \*qstruct dictionarytable *tab[]\*q .\" .Ed .\" .Pp .\" produces, nudge nudge, .\" .Fn "struct dictionarytable *dictionarylookup" "char *h" "struct dictionarytable *tab[]" , .\" nudge .\" .Fn "struct dictionarytable *dictionarylookup" "char *h" "struct dictionarytable *tab[]" , .\" nudge .\" .Fn "struct dictionarytable *dictionarylookup" "char *h" "struct dictionarytable *tab[]" . .\" .Pp .\" Not a pretty sight... .\" In a paragraph, a long parameter containing unpaddable spaces as .\" in the former example will cause .\" .Xr troff .\" to break the line and spread .\" the remaining words out. .\" The latter example will adjust nicely to .\" justified margins, but may break in between an argument and its .\" declaration. .\" In .\" .Xr nroff .\" the right margin adjustment is normally ragged and the problem is .\" not as severe. . .\" Local Variables: .\" mode: nroff .\" End: .\" .SH 履歴 .\" Yoshiteru Kageyama 2001/06/10 mdoc.samples.7 .\" を参考に翻訳 .\" MORI Kouji 2001/08/21 訳チェック diff --git a/ja_JP.eucJP/man/man7/groff_me.7 b/ja_JP.eucJP/man/man7/groff_me.7 index 6b798a39fc..b2054e63a4 100644 --- a/ja_JP.eucJP/man/man7/groff_me.7 +++ b/ja_JP.eucJP/man/man7/groff_me.7 @@ -1,284 +1,284 @@ .\" Copyright (c) 1980 The Regents of the University of California. .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms are permitted .\" provided that the above copyright notice and this paragraph are .\" duplicated in all such forms and that any documentation, .\" advertising materials, and other materials related to such .\" distribution and use acknowledge that the software was developed .\" by the University of California, Berkeley. The name of the .\" University may not be used to endorse or promote products derived .\" from this software without specific prior written permission. .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR .\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED .\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. .\" .\" @(#)me.7 6.4 (Berkeley) 4/13/90 .\" .\" Modified for groff by jjc@jclark.com .\" .\" $FreeBSD$ .\" .hc % .TH GROFF_ME 7 "10 July 2001" "Groff Version 1.19" .UC 3 .SH 名称 groff_me \- 論文を整形するための troff マクロ .SH 書式 .B "groff \-me" [ options ] file ... .br -.B "troff \-me" +.B "groff \-m\ me" [ options ] file ... .SH 解説 本マニュアルページは、 groff 文書整形システムの一部である GNU バージョン \-me マクロを解説します。 本バージョンは、GNU troff でも Unix troff でも使用可能です。 この .I troff マクロ定義パッケージは、 様々な書式の技術論文に対して、よくある形式の文書の整形機能を提供します。 .PP マクロリクエストの定義については後述します。 多くの .I troff リクエストは、本パッケージと組み合わせて使用すると危険ですが、 次のリクエストは、最初に .pp を使った後であれば問題なく使用する ことができます。 .nf .IP .ta \w'.sz +n 'u \&.bp 新しいページを開始する \&.br 出力行をここで分割する \&.sp n n 個の空白行を挿入する \&.ls n (行間) n=1 シングルスペース, n=2 ダブルスペース \&.na 右端を揃えない \&.ce n 次の n 行を中央揃えにする \&.ul n 次の n 行に下線を引く .fi .PP .I pic, .I eqn, .I refer, .I tbl といったプリプロセッサの出力を、入力として受け付けます。 .SH 関連ファイル /usr/share/tmac/me.tmac (e.tmac へのラッパファイル) .br /usr/share/tmac/e.tmac .SH 関連項目 .BR groff (1), .BR troff (1) .br \-me Reference Manual, Eric P. Allman .br Writing Papers with Groff Using \-me .tr &. .SH リクエスト 本リストは不完全です。 興味があるものの詳細については .I "The \-me Reference Manual" を参照してください。 .PP .ta \w'.eh \'x\'y\'z\' 'u +\w'初期値 'u +\w'行分割 'u .br .di x \ka .br .di .na .in \nau .ti 0 リクエスト 初期値 行分割 説明 .br .in \nau .ti 0 \&.(c - yes 中央揃えブロックの開始。 .ti 0 \&.(d - no 遅延テキストの開始。 .ti 0 \&.(f - no 脚注の開始。 .ti 0 \&.(l - yes リストの開始。 .ti 0 \&.(q - yes 大きな引用の開始。 .ti 0 \&.(x \fIx\fR - no .I x 番の索引項目の開始。 -.ad .ti 0 \&.(z - no フローティングキープの開始。 .ti 0 \&.)c - yes 中央揃えブロックの終了。 .ti 0 \&.)d - yes 遅延テキストの終了。 .ti 0 \&.)f - yes 脚注の終了。 .ti 0 \&.)l - yes リストの終了。 .ti 0 \&.)q - yes 大きな引用の終了。 .ti 0 \&.)x - yes 索引項目の終了。 .ti 0 \&.)z - yes フローティングキープの終了。 .ti 0 \&.++ \fIm H\fR - no 論文の節の定義。 .I m は論文の部分を定義します。 .B C (章)、 .B A (付録)、 .B P (序文、例えば、アブストラクト、目次など)、 .B B (参考文献)、 .B RC (各章において 1 ページ目から開始する章)、 .B RA (1 ページ目から開始する付録) のいずれかです。 .ti 0 \&.+c \fIT\fR - yes 章 (または付録等 .++ で設定したもの) の開始。 .I T は章のタイトルです。 .ti 0 \&.1c 1 yes 新しいページを 1 コラムで整形。 .ti 0 \&.2c 1 yes 2 コラムで整形。 .ti 0 \&.EN - yes .I eqn や .I neqn が生成した式の後の空白。 .ti 0 \&.EQ \fIx y\fR - yes 式の前に置くことにより、 行を分割して空白を加えます。式番号は .IR y です。 省略可能な引数 \fIx\fR は、 .I I の場合式のインデント (デフォルト) を、 .I L の場合式の左揃えを、 .I C の場合式の中央揃えを、それぞれ意味します。 .ti 0 \&.GE - yes \fIgremlin\fP ピクチャの終了。 .ti 0 \&.GS - yes \fIgremlin\fP ピクチャの開始。 .ti 0 \&.PE - yes \fIpic\fP ピクチャの終了。 .ti 0 \&.PS - yes \fIpic\fP ピクチャの開始。 .ti 0 \&.TE - yes 表の終了。 .ti 0 \&.TH - yes 表の先頭部分の終了。 .ti 0 \&.TS \fIx\fR - yes 表の開始; \fIx\fR が .I H の場合、表の先頭部分を繰り返し使用します。 .ti 0 \&.b \fIx\fR no no .I x をボールドで表示します; 引数が無い場合にはボールドに移行します。 .ti 0 \&.ba \fI+n\fR 0 yes ベースインデントを .I n だけ増加させます。 このインデントは (段落のような) 通常のテキストのインデントをセットするために使用されます。 .ti 0 \&.bc no yes 新しいコラムの開始。 .ti 0 \&.bi \fIx\fR no no .I x をボールドイタリックで表示 (フィルしない場合のみ)。 .ti 0 \&.bu - yes 小球 (bullet) が付いた段落の開始。 .ti 0 \&.bx \fIx\fR no no \fIx\fR を箱の中に表示 (フィルしない場合のみ)。 .ti 0 \&.ef \fI\'x\'y\'z\'\fR \'\'\'\' no 偶数フッタを x y z にします。 .ti 0 \&.eh \fI\'x\'y\'z\'\fR \'\'\'\' no 偶数ヘッダを x y z にします。 .ti 0 \&.fo \fI\'x\'y\'z\'\fR \'\'\'\' no フッタを x y z にします。 .ti 0 \&.hx - no 次のページのヘッダとフッタを抑制します。 .ti 0 \&.he \fI\'x\'y\'z\'\fR \'\'\'\' no ヘッダを x y z にします。 .ti 0 \&.hl - yes 水平線の描画。 .ti 0 \&.i \fIx\fR no no .I x をイタリックにします。 .I x が無い場合、後続のテキストをイタリックにします。 .ti 0 \&.ip \fIx y\fR no yes ハンギングタグ .IR x を伴う、インデントされた段落を開始します。 インデントは半角 (n の幅) .I y 個分です (デフォルトは 5)。 .ti 0 \&.lp yes yes 左揃えしたブロックの段落の開始。 .ti 0 \&.np 1 yes 数字の付いた段落の開始。 .ti 0 \&.of \fI\'x\'y\'z\'\fR \'\'\'\' no 奇数フッタを x y z にします。 .ti 0 \&.oh \fI\'x\'y\'z\'\fR \'\'\'\' no 奇数ヘッダを x y z にします。 .ti 0 \&.pd - yes 遅延テキストの表示。 .ti 0 \&.pp no yes 段落の開始。 最初の行はインデントされます。 .ti 0 \&.r yes no 後続のテキストをローマンにします。 .ti 0 \&.re - no タブをデフォルト値にリセットします。 .ti 0 \&.sh \fIn x\fR - yes 節の見出しが続きます。 フォントは自動的にボールドになります。 .I n は節のレベルであり、 .I x は節のタイトルです。 .ti 0 \&.sk no no 次のページを空白のままとします。 次の 1 ページのみに有効です。 .ti 0 \&.sm \fIx\fR - no .I x をより小さなポイントサイズでセットします。 .ti 0 \&.sz \fI+n\fR 10p no ポイントサイズを .I n ポイントだけ増加させます。 .ti 0 \&.tp no yes タイトルページの開始。 .ti 0 \&.u \fIx\fR - no 引数に下線を引きます (\fItroff\fR においても)。 (フィルしない場合のみ)。 .ti 0 \&.uh - yes .sh に似ていますが、番号を付けません。 .ti 0 \&.xp \fIx\fR - no .I x 番の索引項目の表示。 +.ad .SH 日本語訳 堀川和雄 . .\" Local Variables: .\" mode: nroff .\" End: diff --git a/ja_JP.eucJP/man/man7/groff_mm.7 b/ja_JP.eucJP/man/man7/groff_mm.7 index 51f285276d..677e04f542 100644 --- a/ja_JP.eucJP/man/man7/groff_mm.7 +++ b/ja_JP.eucJP/man/man7/groff_mm.7 @@ -1,2079 +1,2078 @@ .\" -.\" $Id: groff_mm.7,v 1.18 2004-08-02 10:00:23 metal Exp $ +.\" $Id: groff_mm.7,v 1.19 2005-07-11 12:55:38 metal Exp $ .\" .\" $FreeBSD$ .\" .\" WORD: abstract アブストラクト .\" WORD: broken varable list 変則可変リスト .\" WORD: bullet list 黒丸リスト .\" WORD: diversion 転換 .\" WORD: exhibit エグジビット .\" WORD: front page 表題紙 .\" WORD: hanging indent ハンギングインデント .\" WORD: heading 見出し .\" WORD: justification 行末揃え .\" WORD: memorandum 覚書 .\" WORD: multiple columns 多段組 .\" WORD: nesting 入れ子 .\" WORD: overprint 重ね打ちする .\" WORD: released paper style 公開論文形式 .\" WORD: separate environment 隔離された環境 .\" WORD: static display スタティックディスプレイ .\" WORD: trap トラップ .\" WORD: variable item list 可変項目リスト .\" " .de T2 .if t .ne 2v .ti -.5i \\$1 .sp -1 .. .de T3 .if t .ne 2v .ti -.5i \fB\\$1\fP .br .. .TH GROFF_MM 7 "1 May 2003" "Groff Version 1.19" .SH 名称 groff_mm \- groff mm マクロ .SH 書式 .B groff .B \-mm [ .IR options .\|.\|. ] [ .IR files .\|.\|. ] .SH 解説 groff mm マクロは、DWB mm マクロと互換であるように設計されています。 しかし、以下のような制限があります: .TP .B \(bu ベル研の方言は実装されていません。 .TP .B \(bu マクロ OK 及び PM は実装されていません。 .TP .B \(bu groff mm は、カットマークをサポートしません。 .LP \fBmm\fP は、国際化されて設計されています。 そのため、各国語対応用の短いマクロファイルを書き換えて、 英語のテキストを好みの言語対応に置き換えることができます。 \fBmmse\fP を例として用いてください。 -.LP -.\"########################################################################" +.\"######################################################################## .LP 大域変数の初期化後に \fBlocale\fP か \fIlang\fP\fB_locale\fP という ファイルを読み込みます。そのため、企業名などについてのマクロを ローカライズすることができます。 .sp このマニュアルでは、角括弧は省略可能な引数を表示するのに用いられます。 .sp 3 \fB数値レジスタと文字列変数\fP .br 多くのマクロを数値レジスタと文字列変数によって制御することが出来ます。 数値レジスタは、\fBnr\fP コマンドによって、代入が出来ます。 .br \fB\&.nr\fP \fIXXX\fP \fI[+-]n [i]\fP .br \fBXXX\fP はレジスタの名前です。 \fBn\fP は、代入されるべき値です。 そして、\fBi\fP は、自動増加に使われる増分値です。 もし現在値の増減が必要ならば、\fBn\fP には、 前に接頭辞として正符号や負符号をつけることが出来ます。 (自動増加や自動減少が行なわれるのは、 数値レジスタが正符号か負符号とともに用いられた時のことで、 \fB\en+[XXX]\fP か \fB\en-[XXX]\fP の様になります。) .sp 文字列変数は、\fBds\fP により定義されます。 .br \fB\&.ds\fP \fIYYY string\fP .br 文字列 \fIstring\fP としては、空白も含めて行末までの全部が割り当てられます。 \fIstring\fP の中の最初の空白は、二重引用符が前につけられなければなりません。 (テキストの中では、文字列変数は \fB\e*[YYY]\fP の様に使われます。) .sp \fB数値レジスタの特殊な形式\fP .br 数値レジスタというものは、形式が何も指定されなければ、 通常の数字で表示されます。 形式は \fBaf\fP によって設定出来ます: .br \fB\&.af\fP \fIR c\fP .br \fIR\fP はレジスタの名前で、\fIc\fP はその形式です。 .in +.5i .T2 \fB形式\fP \fB数の並び\fP .T2 1 0, 1, 2, 3, ... .T2 001 000, 001, 002, 003, ... .T2 i 0, i, ii, iii, iv, ... .T2 I 0, I, II, III, IV, ... .T2 a 0, a, b, c, ..., z, aa, ab, ... .T2 A 0, A, B, C, ..., Z, AA, AB, ... .in .LP \fBマクロ:\fP .TP .B ")E level text" \fBtext\fP (見出しテキスト) を目次に加えます。 \fBlevel\fP は 0 か 1-7 の間です。 +関連項目は \fB.H\fP です。 本マクロは目次のカスタマイズに使用します。 .TP .B "1C [1]" 1 段の段組処理を開始します。引数としての \fB1\fP はページ区切りを無効にします。 広い脚注を用いてください。 狭い脚注は重ね打ちになってしまうでしょう。 .TP .B 2C 2 段の段組処理を開始します。ページを 2 段のカラムに分割します。 これは、\fBMC\fP の特殊な場合になります。 関連項目は \fB1C\fP です。 .TP .B AE アブストラクトの終わり。 \&\fBAS\fP を参照してください。 .TP .B "AF [企業名]" 著者の帰属する企業。\fBAU\fP の前に呼び出さなければなりません。 関連項目は \fBCOVER\fP です。 .TP .B "AL [type [text-indent [1]]]" 自動番号付けリストを開始します。 項目は、1 から始められる番号を振付けられます。 引数の \fItype\fP は数字の型を制御します。 .in +.5i .T2 引数 数字の型 .T2 1 アラビア数字 (デフォルト) .T2 A 大文字 (A-Z) .T2 a 小文字 (a-z) .T2 I 大文字 ローマ数字 .T2 i 小文字 ローマ数字 .in \fItext-indent\fP はインデントを設定し、\fBLi\fP よりも優先されます。 3 番目の引数は、各項目の前に空行を出力することを禁止します。 .TP .B "APP name text" \fIname\fP という名前の付録を開始します。 \fIname\fP が "" である場合には、自動的に名前がつけられます。 名前が自動生成されるならば、付録は \fBA\fP から始まります。 数値変数の \fBAph\fP が非 0 であれば、新しいページに切り替えられ、 ヘッダも生成されます。 これが、デフォルトです。 付録は、常に「List of contents」の中に正しいページ番号とともに表示されます。 \fIAPPENDIX\fP という名前は、 文字列変数の \fBApp\fP に望みのテキストを代入すれば、 変えることが出来ます。 文字列 \fBApptxt\fP は、現在の付録テキストを含みます。 .TP .B "APPSK name pages text" \&\fB.APP\fP とほぼ同じです。異なるのは、\fIpages\fP だけ ページ番号が増加されることです。 これが使用されるのは、図表や、その他整形されていない文書が 付録に含まれる時です。 .TP .B "AS [arg [indent]]" アブストラクトの開始。 インデントは、「en (半角)」で指定されますが、単位付きの指定も可能です。 引数の \fIarg\fP は、アブストラクトが印字される場所を制御します。 .in +.5i .T2 arg 配置 .T2 0 公開論文形式 (\fBMT 4\fP) の場合には、 アブストラクトは第 1 ページと表紙に印字されます。 それ以外の場合には、表紙はなく、第 1 ページに印字されます。 .T2 1 アブストラクトは表紙だけに印字されます (\fBMT 4\fP の場合のみ)。 .T2 2 アブストラクトは表紙だけに印字されます (\fBMT 4\fP 以外の場合のみ)。 表紙の印字には、\fBCS\fP は必要ありません。 .in 外部へのレター形式 (\fBMT 5\fP) では、アブストラクトは全く印字されません。 \fIindent\fP は両側マージンのインデントを制御します。 指定されない時は、通常のテキストのインデントが用いられます。 .TP .B "AST [title]" アブストラクトの題目。 デフォルトでは、\fBABSTRACT\fP です。 アブストラクトのテキストの上にそのテキストを設定します。 .TP .B "AT title1 [title2 ...]" 著者の肩書。\fBAT\fP は、各々の \fBAU\fP のすぐ後に現れなければなりません。 肩書は、署名ブロックで名前の後に現れます。 .TP .B "AU [name [initials [loc [dept [ext [room [arg [arg [arg]]]]]]]]]" 著者に関する情報。これは、覚書や論文の著者を明示し、表紙や他の同様の場所に 印字されます。 \fBAU\fP は \fBTL\fP の前に現れてはなりません。 著者情報には、イニシャル (initials)、所在地 (loc)、部局 (dept)、 電話内線番号 (ext)、部屋番号又は部屋の名前 (room)、そして 3 個までの 追加引数を含めることが出来ます。 .TP .B "AV [name [1]]" 承認署名。これは、署名と日付を伴う承認欄を生成します。 変数 \fBLetapp\fP を用いて文字列 \fBAPPROVED:\fP を変更することが出来ます。 また、文字列 \fBDate\fP は \fBLetdate\fP に入っています。 .TP .B "AVL [name]" 手紙の署名。署名用の空間の行を生成します。 .TP .B "B [bold-text [prev-font-text [bold...]]]" ボールド体の開始。引数の数には、制限はありません。 すべての引数は、1 個の単語に結合されます。 第 1 番目の引数、第 3 番目の引数、などなどがボールド体で印字されます。 .TP .B B1 (ms マクロのような) ボックスの開始。テキストの周りにボックスを描きます。 テキストは 1 文字インデントされ、右マージンは 1 文字短くなります。 .TP .B B2 ボックスの終了。\fBB1\fP によって開始されたボックスを終了します。 .TP .B BE ページ底部のブロックの終了。\fBBS\fP を参照してください。 .TP .B "BI [bold-text [italic-text [bold-text [...]]]]" ボールド体とイタリック体。 引数の数には制限はありません。 \fBB\fP を参照してください。 .TP .B "BL [text-indent [1]]" 黒丸リストの開始。これは、黒丸記号と空白を各リスト項目の先頭部分に配置する リストを初期化します (\fBLI\fP を参照してください)。 \fItext-indent\fP は、数値レジスタ \fBPi\fP により設定されるリスト項目の デフォルトのインデントより優先されます。 第 3 番目の引数により、各項目前の空行の出力が禁止されます。 .TP .B "BR [bold-text [roman-text [bold-text [...]]]]" ボールド体とローマン体。 引数の数には、制限はありません。 .TP .B BS ページ底部のブロック開始。これは、テキストブロックの定義を開始します。 このブロックは各ページの底部に印字されます。 ブロックは、\fBBE\fP で終了します。 .TP .B "BVL text-indent [mark-indent [1]]" 変則可変項目リスト。 この変則可変項目リストには、定まった項目記号がありません。 その代わり、各 \fBLI\fP に項目記号が定義されていると仮定しています。 テキストは必ず、項目記号の後の次の行で始まります。 \fItext-indent\fP によって、テキストのインデントが設定されます。 そして、\fImark-indent\fP によって、現在のインデントから項目記号までの 距離が設定されます。 第 3 番目の引数は、各項目の前に空行を出力することを禁止します。 .TP .B "COVER [arg]" \&\fBCOVER\fP は表紙の定義を開始します。 重要なことは、\fB.COVER\fP がすべての通常のテキストより前に現れることです。 \&\fB.COVER\fP では、\fIarg\fP を使用して、 /usr/share/tmac/mm/\fIarg\fP.cov というファイル名を構成します。 このお陰で、無制限な型の表紙を創作することが可能です。 \fIms.cov\fP の目的としていることは、\fBms\fP の表紙に似せることです。 \&\fB.COVER\fP では、表紙の定義の最後に \fB.COVEND\fP があることが要求されます。 必ず、以下のような順番で表紙マクロを使用してください: .nf \&.COVER \&.TL \&.AF \&.AU \&.AT \&.AS \&.AE \&.COVEND .fi しかし、必ず必要なのは \fB.TL\fP と \fB.AU\fP だけです。 .TP .B COVEND これによって表紙の記述は終了し、表紙が印字されます。 このマクロは、表紙ファイルに定義されています。 .TP .B DE ディスプレイ終了。これは、\fBDS\fP 又は \fBDF\fP で始まったテキストブロック やディスプレイを終了させます。 .TP .B "DF [format [fill [rindent]]]" フローティングディスプレイを開始します (入れ子にはできません)。 フローティングディスプレイは、キューに保存され、入れられた順番で印字されます。 \fIformat\fP, \fIfill\fP, \fIrindent\fP は、\fBDS\fP の場合と同じです。 フローティングディスプレイは、2 個の数値レジスタ \fBDe\fP と \fBDf\fP とによって制御されます。 .sp \fBDe レジスタ\fP .in +.5i .T2 0 特別なことは何もありません。これがデフォルトです。 .T2 1 十分な空白がある場合、 ディスプレイが印字された後で改ページが行われます。 そうでない場合、ディスプレイは文書の最後に印字されます。 .in .sp \fBDf レジスタ\fP .in +.5i .T2 0 (セクション - ページの番号付けが有効な時は) 各セクションの最後に、 そうでない時には文書の最後に、ディスプレイは印字されます。 .T2 1 充分な余地があれば、新しいディスプレイは現在のページに印字されます。 そのような余地がなければ、ディスプレイは文書の最後に印字されます。 .T2 2 1 つのディスプレイが、各ページの、又は (多段組のモードでは) 各カラムの一番上に印字されます。 .T2 3 もし充分な余地があるならば、1 つのディスプレイを印字します。 余地がなければ、ディスプレイは次ページか次のカラムの一番上に印字されます。 .T2 4 新しいページまたはカラムに、入るだけのディスプレイを印字します。 もし \fBDe\fP が 0 でなければ、各ディスプレイの間に改ページが出力されます。 .T2 5 現在のページをディスプレイで満たします。 そして、残りは、新しいページまたはカラムから始めます。(これがデフォルトです)。 もし \fBDe\fP が 0 でなければ、各ディスプレイの間に改ページが出力されます。 .in .TP .B "DL [text-indent [1 [1]]]" ダッシュリストの開始。これは、各項目がダッシュの後に印字されるリスト を開始します。 \fItext-indent\fP は、数値レジスタの \fBPi\fP によって設定される、リスト項目の デフォルトのインデントを変更します。 第 2 引数は、リスト項目の間の空行印字を抑止します。 \fBLI\fP を参照してください。 第 3 引数は、各リスト項目の前の空行印字を抑止します。 .TP .B "DS [format [fill [rindent]]]" スタティックディスプレイの開始。これは、\fBDE\fP に至るまでテキストの収集を 始めます。 テキストは、ページ長より長くならない限り同一のページに印字されます。 \fBDS\fP は入れ子にできます。入れ子の深さには限度はありません (合理的な程度に :-)。 .sp \fBformat\fP .in +.5i .ds x " -.\" " .T2 """""" インデントしません。 .T2 none インデントしません。 .T2 L インデントしません。 .T2 I 数値レジスタ \fBSi\fP の値だけテキストをインデントします。 .T2 C 各行を中央揃えします。 .T2 CB ディスプレイ全体をブロックとして中央揃えします。 .T2 R 行を右揃えします。 .T2 RB ディスプレイ全体をブロックとして右揃えします。 .in .sp L, I, C, CB は 0, 1, 2, 3 とも指定できます。これは互換性の理由からです。 (この機能は使用しないでください。:-) .sp \fBfill\fP .in +.5i .T2 """""" 行詰め機能を無効にします。 .T2 none 行詰め機能を無効にします。 .T2 N 行詰め機能を無効にします。 .T2 F 行詰め機能を有効にします。 .in .sp N と F は 0 と 1 とも指定できます。 通常は空行がディスプレイの前と後に印字されます。 数値レジスタ \fBDs\fP に 0 を設定すればこれを抑止出来ます。 \fIrindent\fP を指定すれば、行の長さをその量だけ短く出来ます。 .TP .B "EC [title [override [flag [refname]]]]" 数式の題目。 数式に題目をつけます。 引数に \fIoverride\fP を指定すれば、数式番号を変更出来ます。 .sp \fBflag\fP .in +.5i .T2 none \fIoverride\fP は、番号の接頭辞となります。 .T2 0 \fIoverride\fP は、番号の接頭辞となります。 .T2 1 \fIoverride\fP は、番号の接尾辞となります。 .T2 2 番号は \fIoverride\fP に置き換えられます。 .in \&\fBEC\fP は数値レジスタの \fBEc\fP をカウンタとして使います。 番号の形式を変更する為に、\fB.af\fP を用いることが出来ます。 もし数値レジスタの \fBOf\fP が 1 であれば、題目の形式として番号の後にはドット の代わりにダッシュが使われます。 .br 文字列変数の \fBLe\fP は、式一覧 (List of Equations) の題目を 制御します。 式一覧は、数値レジスタ \fBLe\fP が 1 の場合のみ表示されます。 デフォルトは 0 です。 これは、デフォルトでは \fILIST OF EQUATIONS\fP です。 数値レジスタの \fBLiec\fP は単語 \fIEquation\fP を含みます。 この文字列は番号の前に印字されます。 もし \fIrefname\fP が指定されている時には、数式番号が \fB.SETR\fP によって 保存されます。これは、\fB.GETST\fP \fIrefname\fP によって取り出せます。 .br \fBEC\fP が \fBDS\fP/\fBDE\fP の内部で使用されている場合、 特別な表題処理を行います。 \fBDS\fP の書式には影響されません。 .TP .B "EF [arg]" 偶数ページのフッタ。これは偶数ページの通常のページフッタの すぐ上に印字されます。 \&\fBPF\fP を参照してください。 .TP .B "EH [arg]" 偶数ページのヘッダ。これは偶数ページの通常のページヘッダの すぐ下に印字されます。 \&\fBPH\fP を参照してください。 .TP .B EN 数式の終了。 \&\fBEQ\fP を参照してください。 .TP .B EOP ページ終了のユーザ定義マクロ。 フッタを通常通り印字する代わりにこのマクロが呼び出されます。 このマクロは何のトラップもアクティブではない状態の隔離された環境下で 実行されます。 \&\fBTP\fPを参照してください。 .sp \fBEOP に利用できる文字列変数\fP .in +.5i .T2 EOPf \&\fBPF\fP からの引数。 .T2 EOPef \&\fBEF\fP からの引数。 .T2 EOPof \&\fBOF\fP からの引数。 .in .TP .B "EPIC [-L] width height [name]" \fBEPIC\fP は指定された \fIwidth\fP (幅) と \fIheight\fP (高さ) の 箱を描きます。 また、テキスト \fIname\fP を表示するか、 \fIname\fP が指定されていない場合にはデフォルト文字列を表示します。 外部ピクチャを取り込むときに使用し、 この場合、ピクチャの大きさだけを指定してください。 \fB-L\fP はピクチャを左揃えします。 デフォルトは中央揃えです。 \fBPIC\fP を見てください。 .TP .B "EQ [label]" 数式の開始。 \fBEQ\fP/\fBEN\fP は、\fBeqn\fP への入力として書かれた数式の区切り記号です。 \fBEQ\fP/\fBEN\fP は \fBDS\fP/\fBDE\fP ペアに囲まれていなければなりません。 しかし、\fBEQ\fP が \fBeqn\fP のオプションを設定するのに使用されているだけ ならば、その必要はありません。 数値レジスタの \fBEq\fP が 1 でなければ、\fIlabel\fP は数式の右マージンに 現れます。1 であれば、ラベルは左マージンに現れます。 .TP .B "EX [title [override [flag [refname]]]]" エグジビットの題目。 引数は \fBEC\fP と同じです。 \&\fBEX\fP は数値レジスタの \fBEx\fP をカウンタとして使用します。 文字列変数の \fBLx\fP は、エグジビット一覧 (List of Exhibits) の題名を 制御します。デフォルトでは \fILIST OF EXHIBITS\fP となります。 エグジビット一覧が表示されるのは、 数値レジスタ \fBLx\fP が 1 の場合のみです。 デフォルトは 1 です。 文字列変数の \fBLiex\fP は、\fIExhibit\fP という単語を含みます。 この単語は、番号の前に印字されます。 もし \fIrefname\fP が指定されたなら、その時はエグジビット番号は、 \&\fB.SETR\fP により保存されます。 これは、\fB.GETST\fP \fIrefname\fP によって取り出せます。 .br \fBEX\fP が \fBDS\fP/\fBDE\fP の内部で使用されている場合、 特別な表題処理を行います。 \fBDS\fP の書式には影響されません。 .TP .B "FC [closing]" レターや覚書の正式な締めくくりとして \fIYours\ very\ truly,\fP を印字します。 引数でデフォルトの文字列を置き換えられます。 デフォルトは文字列変数の \fBLetfc\fP に保管されています。 .TP .B "FD [arg [1]]" 脚注のデフォルトの形式。 これは、ハイフネーション (hyphen)、右マージン揃え (adjust)、 脚注テキストのインデント (indent) を制御します。 また、ラベル揃え (ljust) も変更することが出来ます。 .sp .if t .ne 14v .nf .ta .5i +.8i +.8i +.8i +.8i \fBarg hyphen adjust indent ljust\fP 0 no yes yes left 1 yes yes yes left 2 no no yes left 3 yes no yes left 4 no yes no left 5 yes yes no left 6 no no no left 7 yes no no left 8 no yes yes right 9 yes yes yes right 10 no no yes right 11 yes no yes right .sp .fi .DT 11 以上の引数は、引数 0 と見なされます。mm でのデフォルトは 10 です。 .TP .B FE 脚注の終了。 .TP .B "FG [title [override [flag [refname]]]]" 図の題名。 引数は \fBEC\fP のものと同じです。 \&\fBFG\fP は数値レジスタの \fBFg\fP をカウンタとして使用します。 文字列変数の \fBLf\fP は、図一覧 (List of Figures) の題名を 制御します。デフォルトでは \fILIST OF FIGURES\fP となります。 図一覧が表示されるのは、 数値レジスタ \fBLf\fP が 1 の場合のみです。 デフォルトは 1 です。 文字列変数の \fBLifg\fP は、\fIFigure\fP という単語を含みます。 この単語は、番号の前に印字されます。 もし \fIrefname\fP が指定されていれば、図番号が \&\fB.SETR\fP によって保存されます。 これは、\fB.GETST\fP \fIrefname\fP によって取り出せます。 .br \fBFG\fP が \fBDS\fP/\fBDE\fP の内部で使用されている場合、 特別な表題処理を行います。 \fBDS\fP の書式には影響されません。 .TP .B "FS [label]" 脚注の開始。 脚注は \fBFE\fP で閉じられます。 通常脚注は自動的に番号が付されます。 この番号は、文字列変数の \fBF\fP により利用出来ます。 ただ \fB\e*F\fP をテキストに加えてください。 また、\fIlabel\fP を引数として加えることで、 他の番号や名前を脚注に付けることが出来ます。 ディスプレイの中の脚注も今では可能です。 空行が、脚注同士を分離します。 行の高さは、数値レジスタの \fBFs\fP により制御されます。 デフォルト値は 1 です。 .TP .B "GETHN refname [varname]" これは、対応する \fBSETR\fP \fIrefname\fP が配置された場所の セクションヘッダ番号を挿入します。 これは、1 回目のパスでは、X.X.X. となっているでしょう。 \fBINITR\fP を参照してください。 もし \fIvarname\fP が指定されているなら、\fBGETHN\fP により文字列変数の \&\fIvarname\fP にはセクションヘッダ番号が代入されます。 .TP .B "GETPN refname [varname]" これは、対応する \fBSETR\fP \fIrefname\fP が配置された場所の ページ番号を挿入します。 これは、1 回目のパスでは、9999 となっているでしょう。 \fBINITR\fP を参照してください。 もし \fIvarname\fP が指定されているなら、\fBGETPN\fP により文字列変数の \&\fIvarname\fP にはページ番号が代入されます。 .TP .B "GETR refname" これは \fBGETHN\fP と \fBGETPN\fP をテキストの 「chapter」と「, page」とともに結合します。 文字列変数の \fIQrf\fP は参照用のテキストを保持しています: .ti +.5i \&.ds Qrf See chapter \e\e*[Qrfh], page \e\e*[Qrfp]. .br \fIQrf\fP は他の言語をサポートする為に変更出来ます。 文字列変数の \fIQrfh\fP と \fIQrfp\fP は \fBGETR\fP により設定され、 セクションヘッダ番号とページ番号が入っています。 .TP .B "GETST refname [varname]" これは、\fB.SETR\fP の第 2 引数により保存された文字列を挿入します。 これは、1 回目のパスでは、ダミー文字列になっているでしょう。 もし varname が指定されたなら、\fBGETST\fP により文字列変数の \fIvarname\fP には保存された文字列が代入されます。 \&\fBINITR\fP を参照してください。 .TP .B "H level [heading-text [heading-suffix]]" 番号付セクション見出し。 セクションヘッダには、1 から 7 迄のレベルを付けられます。 レベル 1 が、トップレベルです。 テキストは引数 \fIheading-text\fP に与えられます。 テキストに空白があるときには、二重引用符で括らなければなりません。 \fBheading-suffix\fP をセクションヘッダのテキスト中に付け加えられます。 しかし、これは目次には現れません。 通常、これは脚注マークや同様のものに用いられます。 \fIheading-suffix\fP の中では \fB\e*F\fP を使わないでください。 \fB\e*F\fP は機能しません。 手動のラベルを使わなければなりません。 \fBFS\fP を参照してください。 .sp \fBH\fP の直後に置かれた段落 \fBP\fP は、無視されます。 \fBH\fP によって、行送りとインデントの処理が行われます。 .sp \fB見出しの前のページ切り替え\fP .br 数値レジスタの \fBEj\fP は見出しの前のページ切り替えを制御します。 通常、レベル 1 の見出しは、その前に 2 行の空行が印字されます。 それより高次のレベルの見出しの前では 1 行になります。 数値レジスタの \fBEj\fP が 1 であれば、各第 1 レベルの見出しの前で 新しいページが排出されます。 レベルが \fBEj\fP の値以下の見出しすべてについて、ページが切り替えられます。 \fBEj\fP のデフォルト値は 0 です。 .sp \fB見出しの行区切りレベル\fP .br もし見出しレベルが数値レジスタ \fBHb\fP 以下ならば、 見出しの後で行区切りが起こります。 このレジスタのデフォルト値は 2 です。 .sp \fB見出しの空白行のレベル\fP .br もし見出しレベルが数値レジスタ \fBHs\fP 以下ならば、 空白行が見出しの後に挿入されます。 このレジスタのデフォルト値は 2 です。 .sp もしレベルが \fBHb\fP と \fBHs\fP の両方より大きければ、 テキストは同じ行で見出しの後に続きます。 .sp \fB見出しの後のインデント\fP .br 見出しの後のテキストのインデントは数値レジスタの \fBHi\fP によって制御 されます。 このレジスタのデフォルト値は 0 です。 .sp \fBHi\fP .in +.5i .T2 0 テキストは左揃えされます。 .T2 1 テキストのインデントは数値レジスタの \fBPt\fP の値に従います。 \fBP\fP を参照してください。 .T2 2 テキストは見出しの最初の単語に合わせて 1 列に並べられます。 .in .sp \fBセクション見出しの中央揃え\fP .br そのレベルが数値レジスタの \fBHc\fP 以下で、かつ \fBHb\fP 又は \fBHs\fP 以下の見出しはすべて、中央揃えされます。 .sp \fB見出しのフォントの管理\fP .br 各見出しレベルでのフォントは文字列変数の \fBHF\fP を用いて管理されています。 この変数には各レベルでのフォント番号又はフォント名が入れられています。 デフォルトでは \fB2\ 2\ 2\ 2\ 2\ 2\ 2\fP (すべての見出しでイタリック体) です。 これをまた \fBI\ I\ I\ I\ I\ I\ I\fP の様にも書くことが出来ます。 実装によっては、デフォルト値として \fB3\ 3\ 2\ 2\ 2\ 2\ 2\fP を使うものもある ことに注意してください。 省略された値はすべて 1 であると推定されます。 .sp \fBポイントサイズの管理\fP .br 各見出しのポイントサイズは、フォントが \fBHF\fP により管理されるのと同様な 方法で、文字列変数の \fBHP\fP により管理されます。 値 0 は、デフォルトのポイントサイズを選びます。 デフォルト値は \fB0\ 0\ 0\ 0\ 0\ 0\ 0\fP です。 ポイントサイズのみが変わるのであって、垂直サイズではないことに気をつけてください。 垂直サイズはユーザにより指定されるマクロ \fBHX\fP や \fBHZ\fP によって 管理出来ます。 .sp \fB見出しカウンタ\fP .br \fBH1\fP から \fBH7\fP 迄の名前をつけられた 7 個の数値レジスタには 各見出しレベルのカウンタが入れられています。 それらの値はアラビア数字を使って印字されます。 これらは、マクロの \fBHM\fP (下記参照) によって変えられます。 すべての記号は印字する前に結合されます。 これを避ける為には、数値レジスタの \fBHt\fP に 1 を代入してください。 これにより各見出しでは、現在の見出しのカウンタだけが印字されます。 .sp \fB自動の目次\fP .br その見出しレベルが数値レジスタ \fBCl\fP 以下の見出しは、 目次に印字する為に保存されます。 このレジスタのデフォルト値は 2 です。 .sp \fB見出しの特別な管理、ユーザ定義マクロ\fP .br これから記述するマクロは垂直行送り、フォント、または他の機能を細かく 制御するためにユーザが定義できるものです。 引数 \fIlevel\fP は \fBH\fP へのレベル引数です。 しかし、これは番号無し見出しでは 0 になります (\fBHU\fP を参照してください)。 引数 \fIrlevel\fP は実際のレベルです。 これは、番号無し見出しの為に数値レジスタ \fBHu\fP に代入されます。 引数 \fIheading-text\fP は、\fBH\fP や \fBHU\fP へのテキスト引数です。 .sp \fBHX\ \fP\fIlevel\ rlevel\ heading-text\fP .br \fBHX\fP は見出し印字の直前に呼び出されます。 以下のようなレジスタが \fBHX\fP に利用出来ます。 \fBHX\fP は\ \fB}0\fP, \fB}2\fP, \fB;3\fP を変更してもかまいません。 .in +.5i .T3 "文字列変数\ }0" もし \fIrlevel\fP が非 0 であれば、見出し記号と 2 個のスペースが入っています。 そうでなければ、空です。 .T3 "数値レジスタ\ ;0" 見出しの後のテキストの位置が入っています。 0 はテキストが見出しと同じ行に続くはずであることを意味しています。 1 はテキストの前で行区切りが生ずるはずであることを意味します。 2 は空白行が見出しとテキストを分離するはずであることを 意味します。 .T3 "文字列変数\ }2" 数値レジスタの \fB;0\fP が 0 であれば、このレジスタには 2 個のスペースが入ります。 これは見出しからテキストを分離するのに使われます。 もし \fB;0\fP が非 0 であれば、この文字列変数は空です。 .T3 "数値レジスタ\ ;3" これには見出しの後に必要とされる行送りが単位付きで入ります。 デフォルトは 2v です。 これらは番号付け (\fB}0\fP)、垂直行送り (\fB}2\fP)、そして 見出しの後に必要な行送りの様な事柄を変更するのに使用出来ます。 .in .sp \fBHY\ \fP\fIdlevel\ rlevel\ heading-text\fP .br \fBHY\fP はサイズとフォントの計算の後に呼び出されます。 インデントを変更するために使えるでしょう。 .sp \fBHZ\ \fP\fIdlevel\ rlevel\ heading-text\fP .br \fBHZ\fP は見出しの印字の後で、\fBH\fP 又は \fBHU\fP が終了する直前に、 呼ばれます。 これは、セクション見出しに従いページヘッダを変更する為に使うことが出来るでしょう。 .TP .B "HC [hyphenation-character]" ハイフネーション文字を設定します。 デフォルト文字は \e% です。 引数なしで呼ばれた時はデフォルトに再設定します。 ファイルの初めで数値レジスタ \fBHy\fP に 0 を設定すれば、 ハイフネーションを止められます。 .TP .B "HM [arg1 [arg2 [... [arg7]]]]" 見出し記号の型。 見出しカウンタを印字する為の記号の型を制御します。 デフォルトは、すべてのレベルで 1 です。 .sp \fB引数\fP .in +.5i .T2 1 アラビア数字 .T2 0001 ひとつ以上の 0 を先行したアラビア数字 .T2 A 大文字のアルファベット .T2 a 小文字のアルファベット .T2 I 大文字のローマ数字 .T2 i 小文字のローマ数字 .T2 \fI空\fP アラビア数字 .in .TP .B "HU heading-text" 番号無しセクションヘッダ。 数値レジスタ \fBHu\fP をレベルとして \fBHU\fP は \fBH\fP の様に振舞います。 \fBH\fP を参照してください。 .TP .B "HX dlevel rlevel heading-text" ユーザ定義見出しの終了。 セクションヘッダを印字する直前に呼ばれます。 \fBH\fP を参照してください。 .TP .B "HY dlevel rlevel heading-text" ユーザ定義見出しの終了。 セクションヘッダを印字する直前に呼ばれます。 \fBH\fP を参照してください。 .TP .B "HZ dlevel rlevel heading-text" ユーザ定義見出しの終了。 セクションヘッダを印字した直後に呼ばれます。 \fBH\fP を参照してください。 .TP .B "I [italic-text [prev-font-text [italic-text [...]]]]" イタリック体です。 これは引数なしで呼ばれたならフォントをイタリック体に変更します。 引数が 1 個の場合には、これはその単語をイタリック体にします。 引数が 2 個の場合には、これは引数を連結し最初の単語にイタリック体を 設定し、2 番目に以前のままのフォントを設定します。 引数の数には制限はありません。 すべての引数は、連結されます。 .TP .B "IA [addressee-name [title]]" これはレター形式の受信人 (addressee) と受信人のアドレスの記述を 開始します。 いくつかの名前が空の \fBIA\fP/\fBIE\fP ペアにより指定できます。 しかし、アドレスは唯 1 つになります。 \fBLT\fP を参照してください。 .TP .B "IB [italic-text [bold-text [italic-text [...]]]]" イタリック体とボールド体。 偶数番目の引数がイタリック体で、奇数番目がボールド体で印字されます。 \fBI\fP を参照してください。 .TP .B IE \fPIA\fP の後でアドレス指定を終了します。 .TP .B "INITI type filename [macro]" 新しいインデックスシステムを初期化し、 インデックス行を集めるファイル名を \fBIND\fP に設定します。 引数 \fItype\fP はインデックスのタイプ、 すなわち、ページ番号・ヘッダマーク・両方のいずれかを選択します。 デフォルトは \fIN\fP です。 各行を整形する責任のあるマクロを生成することも可能です。 マクロの名前を第 3 引数として追加してください。 このマクロは、インデックスを引数として呼び出されます。 .sp \fBtype\fP .in +.5i .T2 N ページ番号 .T2 H ヘッダマーク .T2 B ページ番号とヘッダマークの両方をタブで区切ります .in .TP .B "INITR filename" 参照用マクロの初期化。 参照は標準エラー出力に書き込まれ、 \fIfilename.qrf\fP にも書き込まれることになっています。 これには、groff の 2 回のパスが必要とされます。 このために、\fBmmroff\fP と呼ばれる別のプログラムが使用されます。 この理由は、\fBINITR\fP が必要とする安全ではない操作が、 典型的な groff インストールには含まれないためです。 最初のパスでは参照を探し、2 回目のパスではそれらを取り込みます。 \fBINITR\fP は複数回使用できます。 しかし、有効なのは最初に出現した \fBINITR\fP だけです。 関連項目は、\fBSETR\fP, \fBGETPN\fP, \fBGETHN\fP です。 .TP .B "IND arg1 [arg2 [...]]" \fBIND\fP は、\fBINITI\fP で選択されたインデックスファイルへ、 全引数とページ番号またはヘッダマークをタブで区切った 1 行を書き込みます。 .in +.5i -\fB礼\fP +\fB例\fP .br arg1\etページ番号 .br arg1\etarg2\etページ番号 .br arg1\etヘッダマーク .br arg1\etページ番号\etヘッダマーク .in .TP .B "INDP" \fBINDP\fP は、文字列変数 \fBIndcmd\fP で指定されるコマンドを実行し、 インデックスを表示します。通常は \fIsort\ -t\et\fP を実行します。 \fBINDP\fP はコマンドの出力を読み、インデックスを生成します。 通常は 2 桁の書式です (\fBTYIND\fP の定義により変更可能です)。 インデックスは、文字列変数 \fBIndex\fP のヘッダと共に表示されます。 この変数のデフォルト値は \fBINDEX\fP です。 1 桁の処理は、一覧の後で返されます。 \fBINDP\fP は、ユーザ定義マクロ \fBTXIND\fP, \fBTYIND\fP, \fBTZIND\fP が 定義されていれば呼び出します。 \fBTXIND\fP は、\fBINDEX\fP の表示前に呼び出されます。 \fBTYIND\fP は、\fBINDEX\fP の表示の代りに呼び出されます。 \fBTZIND\fP は、表示の後で呼び出され、再度通常動作へ戻る処理を行うべきです。 .TP .B "ISODATE [0]" \fBISODATE\fP は、\fBDT\fP 中で既に定義されている日付文字列を、 ISO 書式に、すなわち YYYY-MM-DD に変更します。 これは、コマンドライン上に \fB-rIso=1\fP を加えることでも可能です。 昔の日付書式にするには、引数に \fB0\fP を指定します。 .TP .B "IR [italic-text [roman-text [italic-text [...]]]]" イタリック体とローマン体。 偶数番目の引数がイタリック体で、奇数番目がローマン体で印字されます。 \fBI\fP を参照してください。 .TP .B "LB text-indent mark-indent pad type [mark [LI-space [LB-space]]]" リスト開始マクロ。 これはすべてのリストに使用される共通のマクロです。 引数 \fItext-indent\fP は現在のインデントからテキストをインデントする スペースの数です。 .sp \fIpad\fP と \fImark-indent\fP は項目記号を置く所を指定します。 項目記号は記号領域に配置されます。 \fImark-indent\fP はこの領域の前のスペースの数を設定します。 これは通常 0 です。 記号領域はテキストが始まる所で終ります。 それでもなお、テキストの開始は \fItext-indent\fP により決められます。 .sp もし \fIpad\fP が 0 ならば、項目記号は記号領域の中で左揃えされます。 もし\fIpad\fP が 0 より大きければ、その時は \fImark-indent\fP は無視されます。 そして項目記号はテキストに対しスペースで \fIpad\fP 個分前に配置されます。 この操作では、項目記号は右揃えされます。 .sp もし \fItype\fP が 0 であれば、リストはハンギングインデントになるか、又は 引数の \fImark\fP が与えられていたら、文字列の \fImark\fP が項目記号 となります。 .sp もし \fItype\fP が 0 より大きければ、自動的な番号付けが行われます。 更に \fImark\fP が空であれば、番号はアラビア数字となります。 この時、\fImark\fP には \fB1\fP, \fBA\fP, \fBa\fP, \fBI\fP, \fBi\fP のどれでも指定出来ます。 .sp \fItype\fP には項目記号を表示するため 6 通りの可能な方法の中から 1 つを選べます。 .br \fBtype\fP .in +.6i .T2 1 x. .T2 2 x) .T2 3 (x) .T2 4 [x] .T2 5 .T2 6 {x} .in .sp リストの各項目の前には \fILI-space\fP 行の空行が置かれます。 デフォルトは 1 です。 .sp \fBLB\fP 自体には \fILB-space\fP 行の空行が印字されます。 デフォルトは 0 です。 .TP .B "LC [list-level]" リスト状態情報のクリア。 これにより、アクティブなリストが \fIlist-level\fP レベル迄、 あるいは引数が指定されなかった場合には 0 レベル迄、すべて終了されます。 これはアクティブなリストをすべてクリアする為に \fBH\fP により使用されます。 .TP .B "LE [1]" リストの終了。 これは現在のリストを終了します。 \fBLE\fP はもし引数が指定されているなら、空行を印字します。 .TP .B "LI [mark [1]]" リスト項目。 これは、リストの各項目の最初に置かれます。 引数がないときは、\fBLI\fP は、現在のリスト形式で決められる項目記号 を印字します。 \fBLI\fP に引数を 1 つ指定すると、それが代わりの項目記号として使用されます。 \fBLI\fP に引数を 2 つ指定すれば、\fImark\fP は現在の項目記号の接頭辞と なります。 第 2 引数が \fB1\fP ではなく \fB2\fP の場合、 接頭辞と項目記号の区切り空白は生成されません。 この動作は、数値レジスタ \fBLimsp\fP を 0 に設定することでも実現可能です。 長さ 0 の \fImark\fP を指定した場合はハンギングインデントが生成されます。 .sp 通常はリスト項目の前に空行が印字されます。 この挙動は数値レジスタの \fBLs\fP を用いて制御出来ます。 \fBLs\fP 以下のすべてのリストレベルで先行する行送りが生成されます。 このレジスタのデフォルト値は 99 です。 (リストの入れ子は無制限です。:-) .sp インデントは数値レジスタの \fBLi\fP によって変えられます。 デフォルトは 6 です。 .sp すべてのリストはリスト初期化マクロの \fBLB\fP により始まります。 しかし、リストを使いやすくする為に予め定義されているリストの形式が 7 つあります。 これらの形式はすべて異なったデフォルト値で \fBLB\fP を呼び出します。 .in +.5i .T2 \fBAL\fP 自動増加番号リスト .T2 \fBML\fP 記号付きリスト .T2 \fBVL\fP 可変項目リスト .T2 \fBBL\fP 黒丸リスト .T2 \fBDL\fP ダッシュリスト .T2 \fBRL\fP 参照文献リスト .T2 \fBBVL\fP 変則可変リスト .in これらのリストについてはこのマニュアルのほかの所に記述してあります。 関連項目は \fBLB\fP です。 .TP .B "LT [arg]" 引数に基づいて 4 つの異なった形式の内の 1 つでレターを構成します。 関連項目は \fB内部\fP セクションです。 .in +.5i .T2 \fBarg 形式\fP .T2 BL ブロック形式。日付欄、返送先アドレス、著者のアドレスと結辞は行の中央から始まります。 他のすべての行は左マージンから始まります。 .T2 SB 半ブロック形式。ブロック形式と同様ですが、 各段落の最初の行が スペース 5 個分インデントされます。 .T2 FB 全ブロック形式。すべての行が左マージンから始まります。 .T2 SP 簡易形式。全ブロック形式とほぼ同じです。 主題と著者の身分がすべて大文字で印字されます。 .in .TP .B "LO type [arg]" レターのオプションを指定します (\fB.LT\fP を参照してください)。 以下に示すのは標準のオプションです。 .in +.5i .T2 CN 機密表記。 日付欄の下 2 行目に \fBCONFIDENTIAL\fP を印字します。 任意の引数で \fBCONFIDENTIAL\fP を置き換えられます。 関連項目は文字列変数 \fBLetCN\fP です。 .T2 RN 参考文献表記。 \fBIn reference to:\fP と引数を日付欄の 2 行下に印字します。 関連項目は文字列変数 \fBLetRN\fP です。 .T2 AT 気付。\fBATTENTION:\fP と引数を内部アドレスの下に印字します。 関連項目は文字列変数 \fBLetAT\fP です。 .T2 SA 頭辞。\fBTo Whom It May Concern:\fP か、又はもし指定されていた時には引数を 印字します。 頭辞は内部アドレスの 2 行下に印字されます。 関連項目は \fBLetSA\fP です。 .T2 SJ 主題欄。 レター形式 \fBSP\fP 以外の場合には、主題として \fBSUBJECT:\fP を 接頭辞として付けた引数を内部アドレスの 2 行下に印字します。 レター形式 \fBSP\fP の場合には、主題は接頭辞なしで、すべて大文字で印字されます。 関連項目は文字列変数の \fBLetSJ\fP です。 .in .TP .B "MC column-size [column-separation] " 多段組の開始。\fB1C\fP で通常状態に戻ります。 \fBMC\fP により現在の行長に入るだけの数のカラムが作られます。 \fIcolumn-size\fP は各カラムの幅で、\fIcolumn-separation\fP はカラムの間の 間隔です。 デフォルトの間隔は column-size/15 です。 関連項目は \fB1C\fP です。 .TP .B "ML mark [text-indent [1]]" 記号付きリストの開始。 各リスト項目の前に引数の \fImark\fP が印字されます。 \fItext-indent\fP の指定により、インデントが設定され、 \fBLi\fP よりも優先されます。 第 3 引数により各項目の前の空行の印字が禁止されます。 .TP .B "MT [arg [addressee]]" 覚書形式。 引数 \fIarg\fP は \fI/usr/share/tmac/mm/*.MT\fP というファイル名の部分です。 覚書の形式としては、\fI"string"\fP を含んで 0 から 5 迄サポートされています。 \fIaddressee\fP は単に、AT&T のマクロで使われる変数を設定するだけです。 .br \fBarg\fP .in +.5i .T2 0 通常の覚書。形式は印字されません .T2 1 \fIMEMORANDUM FOR FILE\fP が印字される覚書。 .T2 2 \fIPROGRAMMER'S NOTES\fP が印字される覚書。 .T2 3 \fIENGINEER'S NOTES\fP が印字される覚書。 .T2 4 公開論文形式。 .T2 5 外部へのレター形式。 .in 関連項目は、もっと柔軟な表題紙 \fBCOVER\fP/\fBCOVEND\fP です。 .TP .B "MOVE y-pos [x-pos [line-length]]" ある位置へ移動し、ページオフセットが \fIx-pos\fP に設定されます。 もし \fIline-length\fP が指定されなかったときは、現在の行長と 新しいページオフセットの差が使われます。 正常状態に戻るには、引数なしの \fBPGFORM\fP を使ってください。 .TP .B "MULB cw1 space1 [cw2 space2 [cw3 ...]]" 特殊多段組モードの開始。 各カラムの幅を指定しなければなりません。 また、カラム間の間隔も指定しなければなりません。 最後のカラムの後には間隔指定は必要ありません。 \fBMULB\fP により転換が開始し、 \fBMULE\fP により転換が終了しカラムが印字されます。 幅と間隔の単位は「n」です。 しかし、\fBMULB\fP は「c」や「i」のような通常の単位指定をすべて受け付けます。 \fBMULB\fP は、隔離された環境下で機能します。 .TP .B "MULN" 次のカラムの開始。 これは、カラムを切り替える唯一の方法です。 .TP .B "MULE" 多段組モードの終了とカラムの印字。 .TP .B "nP [type]" 2 段階のヘッダレベルを持つ番号付き段落の印字。 \&\fB.P\fP を参照してください。 .TP .B "NCOL" 次のカラムへの印字を強制します。 \fBMUL*\fP マクロとは共に使用しないでください。 \fB2C\fP を参照してください。 .TP .B "NS [arg [1]]" 異なる形式の注釈を印字します。 引数は予め定義された形式の注釈の中から選びます。 もし 2 番目の引数が利用可能であれば、引数が注釈全体になります。 もし引数が予め定義されたものの中になければ、このマクロは \&\fBCopy (\fP\fIarg\fP\fB) to\fP のように印字されます。 さらに標準の注釈を加えることも可能です。 文字列変数の \fBLetns\fP と \fBLetnsdef\fP を参照してください。 .nf .in +.5i .T2 \fBarg 注釈\fP .T2 \fIなし\fP Copy To .T2 """"" -.\" " Copy To .T2 1 Copy To (with att.) to .T2 2 Copy To (without att.) to .T2 3 Att. .T2 4 Atts. .T2 5 Enc. .T2 6 Encs. .T2 7 Under separate cover .T2 8 Letter to .T2 9 Memorandum to .T2 10 Copy (with atts.) to .T2 11 Copy (without atts.) to .T2 12 Abstract Only to .T2 13 Complete Memorandum to .T2 14 CC .in .fi .TP .B "ND new-date" 新しい日付。 現在の日付を置き換えます。 もし \fInew-date\fP が空文字列であれば、日付は印字されません。 .TP .B "OF [arg]" 奇数ページフッタ。 通常のフッタのすぐ上に 1 行印字されます。 \fBEF\fP と \fBPF\fP を参照してください。 .TP .B "OH [arg]" 奇数ページヘッダ。 通常のヘッダのすぐ下に 1 行印字されます。 \fBEH\fP と \fBPH\fP を参照してください。 .TP .B OP 後続するテキストが奇数ページの一番上に印字されることを確認します。 もし現在奇数ページの一番上にいるなら、白紙ページの出力はしません。 .TP .B "P [type]" 新しい段落の開始。 引数なしの \fBP\fP は、段落の一番最初の行も左揃えしたテキストを生成します。 これは、\fItype\fP に 0 を指定するのと同じです。 もし引数が 1 であれば、\fBP\fP に続くテキストの最初の行は 数値レジスタ \fBPi\fP に設定された数のスペースだけインデントされます。 この値は通常 5 です。 .sp \&\fBP\fP への引数として 1 を指定する代わりに、数値レジスタ \fBPt\fP に 段落の形式を設定することも可能です。 0 と 1 を設定することは、その値を \fBP\fP に与えることと同じになります。 値 2 により、すべての段落がインデントされます。 ただし見出し、リスト、ディスプレイの後は例外です。 .sp 段落間の間隔は数値レジスタの \fBPs\fP により制御され、 デフォルトでは 1 です(1 行の空白行)。 .TP .B "PGFORM [linelength [pagelength [pageoffset [1]]]]" 行長やページ長、ページオフセットを設定します。 このマクロは、レターヘッドや他のものの様に、特別の形式を生成するために 使用出来ます。 これは、通常はファイル中の最初のコマンドですが、必須ではありません。 \&\fBPGFORM\fP を引数なしで使用すれば、 \&\fBMOVE\fP の後ですべてを再初期化することが出来ます。 4 番目の引数が指定されなければ、行区切りが生成されます。 このマクロは、新しい行長とページ長を設定する一方、 最初のページにページ番号を出力するのを避けるために使用できます。 (このマクロが十分に動作していないように見えるときがあります。 代りにコマンド行引数を使用して、 行の長さ、ページの長さ、ページオフセットを変えてください。 ごめんなさい。) .TP .B PGNH 次のページにヘッダが印字されません。 レターや他の特殊なテキストのヘッダを取り除くために使われます。 最初のページのページヘッダを禁止するためには、いかなるテキストよりも前に このマクロが使われなければなりません。 .TP .B PIC [-L] [-C] [-R] [-I n] filename [width [height]] \fBPIC\fP は Postscript ファイルを文書に取り込みます。 本マクロは \fBmmroff\fP と \fBINITR\fP に依存します。 \fB-L\fP, \fB-C\fP, \fB-R\fP, \fB-I n\fP は、 ピクチャを調整するか、ピクチャをインデントします。 オプションの \fIwidth\fP と \fIheight\fP もまた、 ピクチャの大きさを変えるために指定可能です。 .TP .B PE ピクチャの終り。 \&\fBpic\fP コマンドの為のピクチャを終了します。 \&\fBpic\fP コマンドのマニュアルを参照してください。 .TP .B "PF [arg]" ページフッタ。 \&\fBPF\fP は各ページの一番下に印字される行を設定します。 通常は空です。 引数の指定に関しては \fBPH\fP を参照してください。 .TP .B "PH [arg]" ページヘッダ。 各ページの一番上に 1 行印字されます。 引数は「'left-part'center-part'right-part'」のように 指定されなければなりません。 ここで、left-part, center-part, right-part はそれぞれ左揃え、中央揃え、右揃え に印字されます。 文字 \fB%\fP は現在のページ番号に変更されます。 デフォルトのページヘッダは「''- % -''」で、ページ番号が 2 個のダッシュ記号に はさまれます。 .TP .B PS ピクチャの開始 (pic コマンドより)。 \&\fBpic\fP の為のピクチャを開始します。 マニュアルを参照してください。 .TP .B PX ページヘッダのユーザ定義による出口マクロ。 \&\fIno-space\fP モードでページヘッダの印字の直後に \fBPX\fP は呼び出されます。 .TP .B R ローマン体。 ローマンフォントに戻ります。 関連項目は \fBI\fP です。 .TP .B "RB [roman-text [bold-text [roman-text [...]]]]" ローマン体とボールド体。 偶数番目の引数はローマン体で印字されます。 奇数番目は、ボールド体で印字されます。 \fBI\fP を参照してください。 .TP .B "RD [prompt [diversion [string]]]" 標準入力から転換や文字列変数に読み込みます。 テキストは \fIdiversion\fP という名前の転換に保存されます。 テキストを取り出すには、空行にドットの後に転換の名前を書いてください。 もし \fIstring\fP が指定されたなら文字列変数 \fIstring\fP も定義されます。 \&\fIdiversion\fP や \fIprompt\fP は空 ("") にすることが出来ます。 .TP .B RF 参考文献の終了。 参考文献の定義を終了し、通常の処理に復帰します。 \&\fBRS\fP を参照してください。 .TP .B "RI [roman-text [italic-text [roman-text [...]]]]" 偶数番目の引数はローマン体で印字されます。 奇数番目はイタリック体で印字されます。 \&\fBI\fP を参照してください。 .TP .B "RL [text-indent [1]]" 参考文献リストの開始。 各項目の前に角括弧で挟まれた自動増加の番号を付けたリストを開始します。 \&\fItext-indent\fP によって、デフォルトのインデントを変更出来ます。 .TP .B "RP [arg1 [arg2]]" 参考文献ページを生成します。 もし参考文献ページが文書のどこかで必要とされているなら \fBRP\fP を用いることが出来ます。 もし \fBTC\fP が目次の生成に使われているなら、このマクロは必要ありません。 その時は参考文献ページは自動的に印字されます。 .sp もし \fIarg1\fP が 1 ならば参考文献カウンタは再初期化されません。 .sp 引数 \fIarg2\fP により \fBRP\fP に対しページ切り替えが行われるか否か を指定出来ます。 .br \fBarg2\fP .in +.5i .T2 0 参考文献ページは別のページに印字されます。 これがデフォルトです。 .T2 1 リストの後でページを切り替えません。 .T2 2 ページの前でページを切り替えません。 .T2 3 リストの前後でページを切り替えません。 .in 参考文献の項目は空行で分離されます。 数値レジスタの \fBLs\fP を 0 に設定すれば、この空行は抑止出来ます。 .sp 文字列変数の \fBRp\fP には参考文献ページの題名が入っています。 この題名は通常は \fIREFERENCES\fP に設定されています。 .TP .B "RS [string-name]" \&\fBRS\fP により自動番号付けの参考文献の定義が開始します。 文字列変数の \fB\e*(Rf\fP を参考文献記号があるべき所に配置し、 参考文献を参考文献記号の後の次の改行のところから \fBRS\fP/\fBRF\fP の間に挟んで書いてください。 参考文献番号は数値レジスタの \fB:R\fP に保存されています。 もし \fIstring-name\fP が指定されたら、その名前の文字列変数が 定義され、現在の参考文献記号が入れられます。 文字列変数はその後テキスト中で \fB\e*[\fIstring-name\fP]\fP により 参照することが出来ます。 .TP .B "S [size [spacing]]" ポイントサイズと垂直行送りを設定します。 もし引数のどれかが「P」に等しければ、そのときは以前の値が用いられます。 「C」は現在の値を表し、「D」はデフォルトの値を表します。 もし、「+」又は「-」が値の前に用いられているなら、現在の値に加算又は減算 が行われます。 .TP .B "SA [arg]" 右マージン行末揃えが設定されます。 通常、行末揃えは機能しています。 引数がないか、または \fB0\fP であれば、行末揃えは機能を止められます。 引数が \fB1\fP であれば、行末揃えは機能を働かせます。 .TP .B "SETR refname [string]" 現在のヘッダ番号とページ番号を \fIrefname\fP として記憶します。 もし \fIstring\fP が定義されていれば、\fIstring\fP を保存します。 \fIstring\fP は \fB.GETST\fP によって取り出されます。 \fBINITR\fP を参照してください。 .TP .B "SG [arg [1]]" 署名欄。 正式な結辞の後に著者(達)の名前を印字します。 引数は参照データに加えられて、最初か最後の著者の箇所に印字されます。 参照データとは \fB.AU\fP により指定される 所在地、部局、及びイニシャルです。 第 2 引数が与えられた場合、このデータは最初の著者の箇所に印字されます。 そうでない場合、最後の著者の箇所に印字されます。 著者(達)が \fB.WA\fP/\fB.WE\fP で指定されていれば、 何の参照データも印字されません。 \&\fB内部\fP セクションを参照してください。 .TP .B "SK [pages]" ページ送りします。 もし \fIpages\fP が \fB0\fP であるか省略されている場合には、既に印字位置が ページの一番上でなければ、次のページ迄ページ送りされます。 また、\fIpages\fP がこれら以外であれば、\fIpages\fP のページを ページ送りします。 .TP .B "SM string1 [string2 [string3]]" 文字列を小さくします。 もし \fIstring2\fP が指定されたときには、\fIstring1\fP は小さくなり、\fIstring2\fP は通常の大きさで \fIstring1\fP に結合されます。 引数が 3 個あるときには、すべての引数が結合され、 \fIstring2\fP だけが小さくなります。 .TP .B "SP [lines]" 垂直に行送りします。 \fIlines\fP には \fI3i\fP や \fI8v\fP の様に、何らかの単位を付けられます。 1 行にいくつかの \fBSP\fP を記述しても、それらの合計の行数ではなく、 それらのうちで最大の行数の行送りを生成します。 またページの最初のテキスト行までは \fBSP\fP は無視されます。 これを避けるには、\fBSP\fP の前に \fB\e&\fP を加えてください。 .TP .B TAB タブ位置を 5n 毎に再設定します。 通常はそれまでの任意のタブ設定位置を再設定するのに使用されます。 .TP .B "TB [title [override [flag [refname]]]]" 表の題目。 引数は \fBEC\fP のものと同じです。 \&\fBTB\fP は数値レジスタの \fBTb\fP をカウンタとして使用します。 文字列変数の \fBLt\fP は、表一覧 (List of Tables) の題名を 制御します。デフォルトでは \fILIST OF TABLES\fP となります。 表一覧が表示されるのは、 -数値レジスタ \fBlLt\fP が 1 の場合のみです。 +数値レジスタ \fBLt\fP が 1 の場合のみです。 デフォルトは 1 です。 文字列変数の \fBLitb\fP は、\fITABLE\fP という単語を含みます。 この単語は、番号の前に印字されます。 .br \fBTB\fP が \fBDS\fP/\fBDE\fP の内部で使用されている場合、 特別な表題処理を行います。 \fBDS\fP の書式には影響されません。 .TP .B "TC [slevel [spacing [tlevel [tab [h1 [h2 [h3 [h4 [h5]]]]]]]]]" 目次。 通常このマクロは文書の最後の行に置かれます。 このマクロは、数値レジスタの \fBCl\fP によって制御されるレベルまでの 見出しで構成される目次を生成します。 \fBCl\fP は見出しの保存を制御するのであって、\fBTC\fP には 何の関わりもないことに注意してください。 \fIslevel\fP 以下のレベルの見出しにはそれらの前に \fIspacing\fP だけの空行が生成されます。 \fItlevel\fP 以下のレベルの見出しには右揃えした対応するページ番号が置かれます。 これらの見出しのテキストとページ番号はドットか空白によって分離されます。 もし \fItab\fP が 0 より大きければ、空白が用いられます。 そうでなければ、ドットが用いられます。 その他の見出しには見出しテキストの末尾にページ番号が直接置かれます (\fI右揃えしない\fP)。 .sp 引数の残りのものは、目次の前に中央揃えで印字されます。 .sp もし \fBTC\fP が多くて 4 個の引数を伴って呼び出されるならば、ユーザ定義の マクロ \fBTX\fP と \fBTY\fP が使われます。 \fBTX\fP は \fICONTENTS\fP の印字の前に呼び出されます。 そして \fBTY\fP は \fICONTENTS\fP を印字する代わりに呼び出されます。 .sp 等価のマクロを、図一覧、表一覧、式一覧、エクジビット一覧用に定義可能です。 これは \fBTXxx\fP または \fBTYxx\fP を定義することにより行い、 \fBxx\fP は \fBFg\fP, \fBTB\fP, \fBEC\fP, \fBEX\fP のいずれかです。 .sp 文字列変数 \fBCi\fP を各見出しレベルのインデントを制御するために 設定できます。 インデントには \fB.ds\ Ci\ .25i\ .5i\ .75i\ 1i\ 1i\fP の様に 単位を付けなければなりません。 インデントは通常各レベルの見出しの最大長によって制御されます。 .sp すべてのテキストは再定義が出来ます。 新しい文字列変数の \fILifg\fP, \fILitb\fP, \fILiex\fP, \fILiec\fP, \fILicon\fP にはそれぞれ 「Figure」、「TABLE」、「Exhibit」、「Equation」及び「CONTENTS」 が入っています。 これらの変数は、他の言語に再定義できます。 .TP .B TE 表の終了。 \&\fBTS\fP を参照してください。 .TP .B "TH [N]" 表のヘッダ。 \&\fBTS\fP を参照してください。 \&\fBTH\fP により表のヘッダが終了します。 もしページ区切りが起こればこのヘッダはもう一度印字されます。 引数の \fIN\fP はまだ実装されていません。 .TP .B TL [charging-case number(s) [filing-case number(s)]] 覚書の題名の開始。 次の \fBAU\fP 迄のすべてのテキストが題名に含められます。 \&\fIcharging-case number\fP と \fIfiling-case number\fP は 表題紙を処理するために保存されます。 .TP .B TM [num1 [num2 [...]]] \&\fB.MT\fP で使われる技術覚書番号。 無制限な数の引数を指定できます。 .TP .B TP ユーザが定義するページ最上部のマクロです。 このマクロは通常のページヘッダの代わりに呼ばれます。 ヘッダに対して完全な制御が出来ます。 ヘッダとフッタは隔離された環境下で印字されることに注意してください。 ただし、行長は保持されています。 .TP .B "TS [H]" 表の開始。 これは \fBtbl\fP に対する表の指定の開始です。 \&\fBtbl\fP については別個のマニュアルを参照してください。 \&\fBTS\fP は、\fBTE\fP により終了します。 引数 \fIH\fP は \fBmm\fP に対し表にはヘッダがあることを指定します。 \&\fBTH\fP を参照してください。 .TP .B TX ユーザが定義する目次の出口マクロ。 このマクロは \fBTC\fP が単語 \fICONTENTS\fP を印字する直前に呼び出されます。 \&\fBTC\fP を参照してください。 .TP .B TY ユーザが定義する目次の出口マクロ (「CONTENTS」は印字しません)。 \&\fICONTENTS\fP を印字する代わりにこのマクロが呼び出されます。 \&\fBTC\fP を参照してください。 .TP .B VERBON [flag [pointsize [font]]] クーリエフォントを用いた逐語的な出力の開始。 通常プログラムの印字のためです。 すべての文字が等しい幅を持ちます。 ポイントサイズは第 2 引数により変更できます。 font 引数を指定すればクーリエの代わりに他のフォントを使うことが出来ます。 \fIflag\fP によりいくつかの特別な機能を制御します。 この引数は必要とする機能をすべて合計したものとなります。 .in +.5i .T2 値 説明 .T2 1 エスケープ文字 (\e) を無効にします。 通常、これは冗長出力の間は働いています。 .T2 2 冗長テキストの前に空行を付加します。 .T2 4 冗長テキストの後に空行を付加します。 .T2 8 冗長テキストに行番号を振って印字します。 これにより各行の先頭に数字幅のスペースが 4 個付加されます。 文字列変数の \fBVerbnm\fP でより微妙な調節が可能です。 この変数には、\fBtroff\fP コマンドの \fB.nm\fP に指定できる すべての引数が入ります。 通常は「1」が指定されています。 .T2 16 冗長テキストを 5 個の「n」だけインデントします。 これは数値変数の \fBVerbin\fP (単位付き) により管理されます。 .in .TP .B VERBOFF 逐語的出力を終了させます。 .TP .B "VL text-indent [mark-indent [1]]" 可変項目リストには決まった項目記号はありません。 代わりに、このマクロでは各 \fBLI\fP に項目記号が指定されている と仮定しています。 \fItext-indent\fP によりテキストへのインデントが設定されます。 そして \fImark-indent\fP により現在のインデント位置から項目記号までの 距離が設定されます。 第 3 引数は各項目の前に空行が印字されることを禁止します。 .TP .B "VM [-T] [top [bottom]]" 垂直マージン。 トップおよびマージンに、垂直空間を追加します。 オプション \fB-T\fP は、代りにトータルの空間を設定します。 引数を設定しないと、マージンを 0 か、 \fB-T\fP 設定時にはデフォルトの \fI(7v 5v)\fP に設定します。 \fB-T\fP を使ってトップやボトムのマージンをデフォルト値より小さくする場合、 マクロ \fBTP\fP や \fBEOP\fP を定義しておくことを強くお薦めします。 .TP .B "WA [writer-name [title]]" 著者と著者のアドレスの記述を開始します。 空の \fBWA\fP/\fBWE\fP ペアでいくつかの名前を指定出来ます。 しかしアドレスについては 1 つだけです。 .TP .B WE \&\fP.WA\fP の後でアドレスの指定を終了します。 .TP .B "WC [format]" 脚注とディスプレイの幅の調整。 .in +.5i .T2 N デフォルトのモードを設定します。 \&\fB-WF\fP, \fB-FF\fP, \fB-WD\fP 及び \fBFB\fP です。 .T2 WF 広い脚注です。2 段組モードでもやはり広い脚注です。 .T2 -WF 通常の脚注の幅です。段組モードに従います。 .T2 FF すべての脚注は最初に出現した脚注と同じ幅になります。 .T2 -FF 通常の脚注です。幅は \fBWF\fP と \fB-WF\fP に従います。 .T2 WD 広いディスプレイです。2 段組モードでもやはり広いディスプレイです。 .T2 -WD 通常のディスプレイの幅です。段組モードに従います。 .T2 FB フローティングディスプレイが現在のページに印字された時には 行区切りを生成します。 .T2 -FB フローティングディスプレイは行区切を生成しません。 .in .sp 3 .LP -.\"########################################################################" +.\"######################################################################## .LP .B "mm で用いられている文字列変数:" .TP .B App 単語「APPENDIX」が入れてある文字列変数です。 .TP .B Apptxt 現在の付録テキスト。 .TP .B "EM" em ダッシュ文字列です。 .TP .B H1txt \&\fB.H\fP と \fB.HU\fP で、現在の見出しテキストに更新されます。 目次とその類似のものにおいても、更新されます。 .TP .B HF 見出し用のフォントの目録です。 通常は「2 2 2 2 2 2 2」です。 数字ではないフォント名も使用できます。 .TP .B HP 見出し用のポイントサイズの目録です。 通常は「0 0 0 0 0 0 0」です。 これは、「10 10 10 10 10 10 10」と同じです。 .TP .B Index \fIINDEX\fP を含みます。 .TP .B Indcmd インデックスコマンド \fIsort\ -t\et\fP を含みます。 .TP .B Lifg \fIFigure\fP を入れている文字列変数です。 .TP .B Litb \fITABLE\fP を入れている文字列変数です。 .TP .B Liex \fIExhibit\fP を入れている文字列変数です。 .TP .B Liec \&\fIEquation\fP を入れている文字列変数です。 .TP .B Licon \&\fICONTENTS\fP を入れている文字列変数です。 .TP .B Lf 「LIST OF FIGURES」を入れています。 .TP .B Lt 「LIST OF TABLES」を入れています。 .TP .B Lx 「LIST OF EXHIBITS」を入れています。 .TP .B Le 「LIST OF EQUATIONS」を入れています。 .TP .B Letfc 「Yours very truly,」を入れています。 \&\fB.FC\fP で使用されます。 .TP .B Letapp 「APPROVED:」を入れています。 \&\fB.AV\fP で使用されます。 .TP .B Letdate 「Date」を入れています。 \&\fB.AV\fP で使用されます。 .TP .B LetCN 「CONFIDENTIAL」を入れています。 \&\fB.LO CN\fP で使用されます。 .TP .B LetSA 「To Whom It May Concern:」を入れています。 \&\fB.LO SA\fP で使用されます。 .TP .B LetAT 「ATTENTION:」を入れています。 \&\fB.LO AT\fP で使用されます。 .TP .B LetSJ 「SUBJECT:」を入れています。 \&\fB.LO SJ\fP で使用されます。 .TP .B LetRN 「In reference to:」を入れています。 \&\fB.LO RN\fP で使用されます。 .TP .B Letns これは \fB.NS\fP で使用されている色々な文字列を入れている配列です。 これらは実は、\fBLetns!\fP を接頭辞とするいくつかの文字列変数です。 もし \fB.NS\fP への引数が (訳注: 予め定義されているものの中に) 存在しなければ、 その引数は \fBLetns!copy\fP を接頭辞とし \fBLetns!to\fP を接尾辞 として \fB()\fP の間に挟まれます。 \fBcopy\fP の後と \fBto\fP の前の空白に注意してください。 .nf .ta 1.5i \fB変数名 値\fP Letns!0 Copy to Letns!1 Copy (with att.) to Letns!2 Copy (without att.) to Letns!3 Att. Letns!4 Atts. Letns!5 Enc. Letns!6 Encs. Letns!7 Under separate cover Letns!8 Letter to Letns!9 Memorandum to Letns!10 Copy (with atts.) to Letns!11 Copy (without atts.) to Letns!12 Abstract Only to Letns!13 Complete Memorandum to Letns!14 CC Letns!copy Copy " Letns!to " to .fi .TP .B Letnsdef \&\fB.NS\fP に何も引数が指定されていないときに使用される標準的な注釈を 定義します。 デフォルトは \fB0\fP です。 .TP .B "MO1 - MO12" \&\fIJanuary\fP から \fIDecember\fP 迄が入っている文字列変数です。 .TP .B Qrf 「See chapter \e\e*[Qrfh], page \e\en[Qrfp].」 が入っている文字列変数です。 .TP .B Rp 「REFERENCES」が入っています。 .TP -.B Tm -商標記号 \e(tm が入っています。 -.TP .B Tcst 目次の現在状態と XXXX の一覧を含みます。 \&\fB.TC\fP の外では空です。 \&\fB.TP\fP のようなユーザ定義マクロでは、便利です。 .nf .ta 1.5i \fB値 意味\fP co 目次 fg 図一覧 tb 表一覧 ec 式一覧 ex エクジビット一覧 ap 付録 .fi .ta .TP +.B Tm +商標記号 \e(tm が入っています。 +.TP .B Verbnm \&\fB.VERBON\fP で使用されている \fB.nm\fP への引数です。 デフォルト: \fB1\fP。 -.\"-----------------------------------" +.\"----------------------------------- .LP .B "mm で使用されている数値変数:" .TP .B Aph もしこの数値変数が非 0 であれば、 各々の新しい付録について新しい付録ページに印字します。 もし \fBAph\fP が 0 であれば何も出力されません。 しかし、「目次」には付録の見出し項目が常に含まれます。 .TP .B Cl 目次の見出し項目レベル。範囲は [0:7] です。 もし見出しレベルが Cl 以下であれば、目次の見出し項目は保存されます。 デフォルトは 2 です。 .TP .B Cp もし、Cp が 0 であれば、LIST OF XXXX の間で改ページを行います。 デフォルトは 0 です。 .TP .B D デバッグフラグ。 値が正値であれば、様々な段階のデバッグリストを出力します。 値が 1 であれば整形についての進行情報を提供します。 デフォルトは 0 です。 .TP .B De フローティングディスプレイの後で改ページが出力されます。 範囲は [0:1] です。デフォルトは 0 です。 .TP .B Dsp 定義されている場合、 スタティックディスプレイの前後の空白出力を制御します。 定義されていない場合には、Lsp の値が使用されます。 .TP .B Df フローティングキープの出力形式。 範囲は [0:5] です。デフォルトは 5 です。 .TP .B Ds もし 1 であれば、ディスプレイの前後で \fBLsp\fP だけ行送りします。 範囲は [0:1] です。デフォルトは 1 です。 .TP .B Ej 改ページ。デフォルトは 0 です。 .TP .B Eq 数式ラベルの行揃え。 0 なら左揃え、1 なら右揃え。デフォルトは 0 です。 .TP .B Fs 脚注の行送り。デフォルトは 1 です。 .TP .B "H1-H7" 見出しカウンタ。 .TP .B H1dot 0 より大の場合、レベル 1 の見出し番号の後にドットを付けます。 デフォルトは 1 です。 .TP .B H1h 数値レジスタ \fBH1\fP をコピーしますが、 ページブレーク直前に増加されます。 ユーザ定義のヘッダマクロにおいて有用です。 .TP .B Hb 見出し行区切りのレベル。 範囲は [0:7] です。デフォルトは 2 です。 .TP .B Hc 見出し中央揃えのレベル。 範囲は [0:7] です。デフォルトは 0 です。 .TP .B Hi 見出しの一時的なインデント。 範囲は [0:2] です。デフォルトは 1 です。 .br 0\ ->\ 0 インデント、左マージン .br 1\ ->\ 右へインデント、.P 1 と同様 .br 2\ ->\ 先行する見出しのテキスト部分に合わせてインデント .TP .B Hps 見出しに先立つ行送りのレベルについての数値変数です。 もし見出しレベルが \fBHps\fP 以下ならば、 セクション見出しには 1 行ではなく 2 行が先行します。 デフォルトは第 1 レベルだけです。 行送りの実際の量は変数 \fBHps1\fP と \fBHps2\fP により制御されます。 .TP .B Hps1 見出しレベルが \fBHps\fP より大きい場合に \fB.H\fP に先行する行数です。 値には単位を付けます。通常は 0.5 です。 .TP .B Hps2 見出しレベルが \fBHps\fP 以下の場合に \fB.H\fP に先行する行数です。 値には単位を付けます。通常は 1 です。 .TP .B Hs 見出し行送りレベル。 範囲は [0:7] です。デフォルトは 2 です。 .TP .B Hss 見出しレベルが \fBHs\fP 以下のとき、 \&\fB.H\fP の後にこの数の行が続きます。 値は単位指定であり、通常 1 です。 .TP .B Ht 見出し番号の形式。デフォルトは 0 です。 0 -> 複合番号 (1.1.1 ...) .br 1 -> 単一番号。 .TP .B Hu 番号無し見出しのレベル。デフォルトは 2 です。 .TP .B Hy 本文のハイフネーション。デフォルトは 1 です。 .br 0\ ->\ ハイフネーションしない。 .br 1\ ->\ 14 でハイフネーションをする。 .TP .B Iso ISO 書式の日付文字列を得るには、コマンドラインでこの変数を 1 に設定します (\fB-rIso=1\fP)。 文書中では使用できません。 .TP .B L ページの長さであり、コマンドラインでのみ設定できます。 .TP .B Letwam \&\fB.WA\fP/\fB.WE\fP で使われる返送先アドレスの最大行数。 デフォルトは 14 です。 .TP .B "Lf, Lt, Lx, Le" それぞれ、図一覧、表一覧、エグジビット一覧、式一覧の 印字の許可 (1)、又は禁止 (0) です。 デフォルトは、Lf=1, Lt=1, Lx=1, Le=0 です。 .TP .B Li \&.AL で使われるリストのインデントです。 デフォルトは 6 です。 .TP .B Limsp 自動リスト (.Al) 用の、接頭辞と記号の間の空白のフラグです。 .br 0\ ==\ 空白無し .br 1\ ==\ 空白有り .TP .B Ls リストの行送り。 もし現在のリストレベルが Ls より大きければ、 リストの周囲には行送りは生じません。 デフォルトは 99 です。 .TP .B Lsp 空行の大きさ。通常は 0.5v です。 しかし、もし \fBn\fP が設定されていれば (\fB.nroff\fP)、1v となります。 .TP .B N 番号付けの形式。範囲は [0:5] です。デフォルトは 0 です。 .br 0\ ==\ (デフォルト) すべてのページで通常のヘッダ。 .br 1\ ==\ 最初のページのフッタはヘッダに置き換えられます。 ヘッダ部分には何もありません。 .br 2\ ==\ 最初のページのページヘッダは取り除かれます。 .br 3\ ==\ 「セクション - ページ」の番号付けが有効になります。 .br 4\ ==\ 最初のページのページヘッダは取り除かれます。 .br 5\ ==\ 「セクション - ページ」と「セクション - 図」の番号付けが有効になります。 関連項目は数値レジスタの Sectf と Sectp です。 .TP .B Np 番号付きの段落です。デフォルトは 0 です。 .br 0\ ==\ 番号を振りません。 .br 1\ ==\ 第 1 レベルの見出しに番号を振ります。 .TP .B O ページオフセットであり、コマンドラインでのみ設定できます。 .TP .B Of 図、表、エグジビット、数式の題目の形式です。 デフォルトは 0 です。 .br 0\ =\ ". " .br 1\ =\ " - " .TP .B P 現在のページ番号です。 「セクション - ページ」の番号付けが有効でなければ、 通常は % と同じです。 .TP .B Pi 段落のインデントです。 デフォルトは 5 です。 .TP .B Pgps ヘッダとフッタのポイントサイズが、現在の設定に従うべきか、 あるいはヘッダとフッタが定義されたときにだけ変更されるべきかを制御します。 .in +.5i .ti -.5i .T2 値 説明 .T2 0 \&\fB.PH\fP, \fB.PF\fP, \fB.OH\fP, \fP.EH\fP, \fB.OF\fP, \fB.OE\fP が実行された時だけ、ポイントサイズが現在の設定に変更されます。 .T2 1 ポイントサイズは \fB.S\fP のたびに変更されます。 これがデフォルトです。 .in .TP .B Ps 段落の行送り。デフォルトは 1 です。 .TP .B Pt 段落の形式です。デフォルトは 0 です。 .br 0\ ==\ 左揃え .br 1\ ==\ インデントする .P .br 2\ ==\ .H, .DE, .LE の後以外では、インデントする .P .TP .B Sectf 「セクション - 図」を制御するフラグです。 非 0 値であれば有効になります。 関連項目はレジスタ N です。 .TP .B Sectp 「セクション - ページ番号」を制御するフラグです。 非 0 値であれば有効になります。 関連項目はレジスタ N です。 .TP .B Si ディスプレイのインデントです。デフォルトは 5 です。 .TP .B Verbin \&\fB.VERBON\fP のインデントです。デフォルトは 5n です。 .TP .B W 行の長さであり、コマンドラインでのみ設定できます。 .TP .B .mgm 常に 1 です。 .LP .SH 内部 レターマクロではレターの形式により決まる種々の副マクロが使用されています。 副マクロの名前にはレターの形式が接尾辞として入っています。 そのため他のレターの形式の定義を、 その国のマクロファイル内や、局所的な追加として行うことが可能です。 \&\fB.LT\fP は数値変数の \fBPt\fP と \fBPi\fP を 0 と 5 に設定します。 新しいレター形式については、 以下の文字列変数とマクロを定義しなければなりません: .TP \fBlet@init_\fP\fItype\fP このマクロは \fB.LT\fP によって直接呼び出されます。 変数や他の要素を初期化することになっています。 .TP \fBlet@head_\fP\fItype\fP このマクロはレターヘッドを印字します。 通常のページヘッダの代わりに呼び出されます。 \fBlet@header\fP という別名を取り除くことになっています。 そうしなければ、この別名はすべてのページにおいて呼び出されてしまいます。 .TP \fBlet@sg_\fP\fItype\ name\ title\ n\ flag\ [arg1\ [arg2\ [...]]]\fP レターの場合だけ、\fB.SG\fP がこのマクロを呼び出します。 覚書にはそれ独自の処理機構があります。 \fIname\fP と \fItitle\fP は \fB.WA\fP/\fB.WB\fP によって指定されます。 \fIn\fP はカウンタで、1 から max までです。 そして \fIflag\fP は、\fIname\fP が最後の名前であれば真の値になります。 \&\fB.SG\fP に対する他の引数が追加されます。 .TP \fBlet@fc_\fP\fItype\ closing\fP このマクロは \fB.FC\fP によって呼び出され、正式な結辞を引数とします。 .LP \&\fB.LO\fP が包括的なオプションマクロとして実装されています。 \&\fB.LO\fP には \fBLet\fP\fItype\fP という名前の文字列変数が 定義されていることが必要とされます。 ここで、\fItype\fP はレターの形式です。 そのとき、\fB.LO\fP は引数を文字列変数 \fBlet*lo-\fP\fItype\fP に 割り当てます。 .LP .\".SH バグ -.\" " .SH 作者 +.\" 原文は 8 ビット文字が使われている。 +.\" J?rgen H?gg, Lund, Sweden .ie t J\(:orgen H\(:agg, Lund, Sweden .el Jorgen Hagg, Lund, Sweden .SH 関連ファイル .TP .B /usr/share/tmac/tmac.m .TP .B /usr/share/tmac/mm/*.cov .TP .B /usr/share/tmac/mm/*.MT .TP .B /usr/share/tmac/mm/locale .SH 関連項目 .BR groff (1), .BR troff (1), .BR tbl (1), .BR pic (1), .BR eqn (1) .br .BR groff_mmse (7) .\" Translated by Tetsuro FURUYA , Dec., 1998. . .\" Local Variables: .\" mode: nroff .\" coding: latin-1 .\" End: diff --git a/ja_JP.eucJP/man/man7/groff_ms.7 b/ja_JP.eucJP/man/man7/groff_ms.7 index c50ff41ddd..8e4442e008 100644 --- a/ja_JP.eucJP/man/man7/groff_ms.7 +++ b/ja_JP.eucJP/man/man7/groff_ms.7 @@ -1,1004 +1,1007 @@ '\" t .ig Copyright (C) 1989-1995, 2001, 2002 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be included in translations approved by the Free Software Foundation instead of in the original English. .. .\" $FreeBSD$ .TH GROFF_MS 7 "11 October 2002" "Groff Version 1.19" .SH 名称 groff_ms \- groff ms マクロ .SH 書式 .B groff .B \-ms [ .IR options .\|.\|.\& ] [ .IR files .\|.\|.\& ] .br .B groff .B \-m\ ms [ .IR options .\|.\|.\& ] [ .IR files .\|.\|.\& ] .\" ----- .SH 解説 このマニュアルページは GNU バージョンの .I ms マクロの解説をします。 このマクロは、 .I groff 文書整形システムの一部分です。 この .I ms マクロは、4.3 .SM BSD Unix .I ms マクロの文書化された機能と互換であるように設計されています (詳細は後述の .I troff ms との違い を参照してください)。 .I ms マクロは、報告書、手紙、書籍、技術文書に適しています。 .\" ----- .SH 使用法 .I ms マクロパッケージは、ファイルにある程度の構造があることを期待しています。 最も単純な文書は、段落マクロで開始し、 段落マクロか単なる空行で区切られたテキストからなります。 長い文書は、次の構造を持ちます: .TP .B "文書タイプ" 文書の先頭に .B RP (報告書) マクロを置くと、 .I groff は表紙の情報をそのページに印字します。 そうでない場合は、この情報は最初のページに印字され、 直後に文書のテキストが続きます。 AT&T .I troff の他の文書書式は AT&T か Berkeley 固有であり、 .IR "groff ms" ではサポートされていません。 .TP .B "書式とレイアウト" 数値レジスタを設定することで、文書の活字 (フォントと大きさ)、 マージン、間隔、ヘッダ、フッタ、脚注を変えられます。 詳細は後述の .I "文書制御レジスタ" を参照してください。 .TP .B "表紙" 表紙ページは、タイトル、省略可能な著者名と組織名、 アブストラクト、日付からなります。 さらなる詳細は後述の .I "表紙ページマクロ" を参照してください。 .TP .B "本文" 表紙ページに、あなたの文書が続きます。 これは、段落、見出し、リストからなります。 .TP .B "目次" 長い文書は、通常、目次を含みます。 これは、文書の最後に .B TC マクロを置くことで可能となります。 .\" ----- .SS "文書制御レジスタ" 次の表は、文書制御レジスタを列挙しています。 一貫性のために、マージンに関するレジスタは、文書の先頭で、もしくは .B RP マクロの直後で設定してください。 .LP .ne 9 .B マージン設定 .RS .na .TS cb s cb s s cb s cb s afCW s l s s l s l s. レジスタ 定義 効果対象 デフォルト _ PO T{ ページオフセット (左マージン) T} T{ 次ページ T} 1i LL T{ 行長 T} 次段落 6i LT T{ ヘッダ/フッタ長 T} 次段落 6i HM T{ トップ (ヘッダ) マージン T} 次ページ 1i FM T{ ボトム (フッタ) マージン T} 次ページ 1i _ .TE .RE .LP .ne 7 .B テキスト設定 .RS .TS cb s cb s s cb s cb s afCW s l s s l s l s. レジスタ 定義 効果対象 デフォルト _ PS T{ ポイントサイズ T} 次段落 10p VS T{ 行間 (先行) T} 次段落 12p _ .TE .RE .LP .ne 7 .B 段落設定 .RS .TS cb cb s cb cb afCW l s l l . レジスタ 定義 効果対象 デフォルト _ PI T{ 初期インデント T} 次段落 5n PD T{ 段落間の間隔 T} 次段落 0.3v QI T{ 引用段落のインデント T} 次段落 5n _ .TE .RE .LP .ne 7 .B 脚注設定 .RS .TS cb cb cb cb afCW l l l . レジスタ 定義 効果対象 デフォルト _ FL 脚注の長さ 次の脚注 LL*5/6 FI 脚注のインデント 次の脚注 2n FF 脚注の書式 次の脚注 0 _ .TE .RE .LP .ne 6 .B 他の設定 .RS .TS cb s cb s s cb s cb s afCW s l s s l s l s. レジスタ 定義 効果対象 デフォルト _ MINGW T{ カラム間の最小幅 T} 次ページ 2n _ .TE .ad .RE .\" ----- .SS "表紙ページマクロ" 次のマクロを次の順序で使用することで、文書の表紙ページを作成してください。 .TP .B \&.RP [no] 文書の報告書書式を指定します。 報告書書式は、独立した表紙ページを作成します。 .B RP マクロを指定しないと、 .I groff は、表紙のサブセットを文書のページ 1 に印字します。 .IP 省略可能な .B no 引数を使用すると、 .I groff は表紙ページを印字しますが、表紙ページ情報 (タイトル、著者、アブストラクト等) を文書のページ 1 に続けません。 .TP -.B \&.P1 +.B \&.P1 (P に数字の 1) ページ 1 にヘッダを印字します。 デフォルトは、ヘッダを抑制します。 .TP .BI "\&.DA [" xxx ] (省略可能) 現在の日付かマクロに引数があればそれを、 表紙ページ (指定されていれば) とフッタに印字します。 これは .IR nroff のデフォルトです。 .TP .BI "\&.ND [" xxx ] (省略可能) 現在の日付かマクロに引数があればそれを、 表紙ページ (指定されていれば) に印字しますが、フッタには印字しません。 これは .IR troff のデフォルトです。 .TP .B \&.TL 文書のタイトルを指定します。 .I groff は .B TL マクロから著者かアブストラクトまでのテキストを集め、タイトルとします。 .TP .B \&.AU 著者名を指定します。 複数の著者を指定するには、各著者に対して .B AU マクロを使用します。 .TP .B \&.AI 著者の組織を指定します。 複数の組織を指定可能です。 .TP .B \&.AB [no] アブストラクトを開始します。 デフォルトでは、語 .BR ABSTRACT を中央寄せイタリックにて、アブストラクトのテキストの上に印字します。 オプションの .B no は、この見出しを抑制します。 .TP .B \&.AE アブストラクトの終了です。 .\" ----- .SS 段落 インデント付きの段落を作成するには .B PP マクロを使用し、初期インデント無しの段落を作成するには .B LP マクロを使用します。 .PP .B QP マクロは、すべてのテキストを、左および右のマージンに対してインデントします。 効果は、HTML の .B
要素と同じです。 次段落や見出しは、マージンを通常に戻します。 .PP .B XP マクロは、拡張段落を生成します。 段落の最初の行は左マージンから開始し、続く行がインデントされます .RB ( PP の逆です)。 .SS 見出し 文書に階層構造を作成するには、見出しを使用します。 .I ms マクロでは、本文と同じフォントファミリで同じポイントサイズの .B ボールド にて、見出しを印字します。 .PP 次の見出しマクロが使用可能です: .TP .BI \&.NH \0xx 数字付き見出し。 引数 .I xx は、見出しのレベルを示す数値引数であるか、 .I S\ xx\ xx\ \c \&".\|.\|." という形式の明示的なセクション番号です。 順番からは外れた見出しレベル、例えば .BR ".NH\ 1" の後に .B ".NH\ 3" を指定すると、 .I groff は標準エラーに警告を表示します。 .TP .B \&.SH 数字無しの副見出しです。 .\" ----- .SS 強調印字 .I ms マクロには、テキストを強調するための様々な方法があります: .TP .BI "\&.B [" txt " [" post " [" pre ]]] 最初の引数を .B "ボールドタイプ" にします。 第 2 引数を指定すると、 .I groff は、それを以前のフォントにて、空白を挟まずに印字します (強調テキストの後に、句読点を強調せずに置けます)。 同様に、(存在すれば) 第 3 引数を以前のフォントにて、最初の引数の .B 前 に印字します。 例えば .RS .IP \&.B foo ) ( .RE .IP は次のように印字されます: .RB ( foo ) .IP このマクロに引数を指定しないと、 次の強調・段落・見出しマクロまでの後続するすべてのテキストを、 .I groff はボールドで印字します。 .TP .BI "\&.R [" txt " [" post " [" pre ]]] 最初の引数をローマン (通常) タイプにします。 他は .B B マクロと同様に動作します。 .TP .BI "\&.I [" txt " [" post " [" pre ]]] 最初の引数を .IR "イタリックタイプ" にします。 他は .B B マクロと同様に動作します。 .TP .BI "\&.CW [" txt " [" post " [" pre ]]] 最初の引数を等幅フェースにします。 他は .B B マクロと同様に動作します。 .TP .BI "\&.BI [" txt " [" post " [" pre ]]] 最初の引数をボールドイタリックタイプにします。 他は .B B マクロと同様に動作します。 .TP .BI "\&.BX [" txt ] 引数を印字し、その周りに箱を描きます。 空白を含む文字列を箱で囲みたい場合、数値幅の空白 (\[rs]0) を使用してください。 .TP .BI "\&.UL [" txt " [" post ]] 最初の引数を下線付きで印字します。 第 2 引数を指定すると、 .I groff は、それを以前のフォントにて、 空白を挟まずに下線付きテキストの後に印字します。 .TP .B \&.LG 次のフォントサイズ・強調・段落・見出しマクロまでの後続するすべてのテキストを、 大きなタイプ (現在のポイントサイズより 2 ポイント大) で印字します。 このマクロを複数回指定することで、 必要な大きさになるまでポイントサイズを大きくすることができます。 .TP .B \&.SM 次のフォントサイズ・強調・段落・見出しマクロまでの後続するすべてのテキストを、 小さなタイプ (現在のポイントサイズより 2 ポイント小) で印字します。 このマクロを複数回指定することで、 必要な小ささになるまでポイントサイズを小さくすることができます。 .TP .B \&.NL -後続するすべてのテキストを通常のポイントサイズ +後続するすべてのテキストを通常のポイントサイズ .RB ( PS レジスタの値) で印字します。 .TP .BI \[rs]*{ text \[rs]*} 括られた .I テキスト を上付き文字として印字します。 .\" ----- .SS インデント テキストの一部をインデントする必要があるかもしれません。 典型的なインデントの使用法は、 入れ子のリストやサブリストを作成することです。 .PP インデントされたテキスト部分の開始と終了には、それぞれ .B RS および .B RE のマクロを使用します。 .B PI レジスタは、インデント量を制御します。 .PP .B RS および .BR RE の組を入れ子で使用することで、 インデントされた部分を必要なだけ深く入れ子にすることができます。 .\" ----- .SS リスト .B IP マクロは、すべてのリストの仕事を操作します。 この構文は次の通りです: .TP .BI ".IP [" marker " [" width ]] .IP .I marker は、通常、順番無しリストでは中黒文字 .B \[rs](bu 、番号付きリストでは番号 (または自動的に増加する数値レジスタ)、 インデント付き (用語解説スタイル) リストでは語や句です。 .IP .I width は、各リスト項目の本文用のインデントを指定します。 ひとたび指定すると、次に指定されるまで、 文書中のすべてのリスト項目に対してインデントは同じままです。 .\" ----- .br .ne 15 .SS "タブストップ" 必要に応じてタブストップを設定するには .B ta リクエストを使用します。 タブストップをデフォルト (5n 毎) に戻すには .B TA マクロを使用します。 別のデフォルトタブストップ集合を作りたい場合には、 .B TA マクロを再定義します。 .\" ----- .SS "ディスプレイとキープ" テキストベースの例や図 (コードリスト等) を印字するには、 ディスプレイを使用します。 ディスプレイはフィルをオフにしますので、各行の間に .B br リクエストを挿入せずにコードがそのまま印字されます。 ディスプレイは、単一ページ上に .I キープ することもできますし、ページをまたがった分割を許すこともできます。 .RS .ne 11 .na .TS cb s s s cbt s s cb s cb s ^ s s lfCW s lfCW s l s s. ディスプレイマクロ ディスプレイのタイプ キープ有 キープ無 _ \&.DS L \&.LD Left-justified. \&.DS I [\fIindent\fP] \&.ID T{ インデント付き (デフォルトのインデントは \fBDI\fP レジスタ値)。 T} \&.DS B \&.BD T{ ブロック中央寄せ (左寄せで、最長行が中央寄せされます)。 T} \&.DS C \&.CD 中央寄せ。 \&.DS R \&.RD 右寄せ。 _ .TE .RE .ad .LP ディスプレイタイプを終了するには .B DE マクロを使用します。 .PP 直後に続く表 (やリストや他の項目) を参照する段落等、テキストを同じページに .I キープ するには、 .B KS および .B KE のマクロを使用します。 .B KS マクロは、単一ページにキープされるべきテキストブロックを開始し、 .B KE マクロはそのブロックを終了します。 .PP .I "フローティングキープ" は、 .B KF および .B KE のマクロで指定可能です。 このキープが現在のページに入り切らない場合、 .I groff はキープの内容を保持し、(ソースファイル中で) キープに続くテキストで 現在のページの残りを埋めます。 改ページ時、すなわち明示的な .B bp リクエスト時もしくはページの終了時に、 .I groff は新規ページの先頭にフローティングキープを印字します。 指定したその場所に現れる必要が無い大きなグラフィックや表を 印字するときに有用です。 .\" ----- .SS "表、図、式、参照" .I -ms マクロは標準の .I groff プリプロセッサ .IR tbl , .IR pic , .IR eqn , .IR refer をサポートします。 プリプロセッサ用のテキストは、次のタグの組で括ってください: .TP .BR "\&.TS [H]" " と " \&.TE .I tbl プリプロセッサで処理されるべき表を表現します。 オプションの .B H 引数は、 .B TH マクロまでの情報を使用して、ランニングヘッダを作成すべきことを .I groff に指示します。 .I groff は表の先頭にヘッダを印字し、表が別のページにまたがるときには次ページにも .I groff はヘッダを印字します。 .TP .BR \&.PS " と " \&.PE .I pic プリプロセッサで処理されるべきグラフィックを表現します。 .I pic ファイルは、ウェブから入手可能な AT&T .I pic マニュアルを参考にして手動で作成できますし、 .IR xfig のようなグラフィックプログラムを使用して作成することも可能です。 .TP .BR "\&.EQ [\fI\,align\/\fP]" " と " \&.EN .I eqn プリプロセッサで処理されるべき式を表現します。 オプションの .I align 引数は、 .BR C , .BR L , .B I のいずれかであり、 式をそれぞれ中央寄せ (デフォルト)、左寄せ、インデントします。 .TP .BR \&.[ " と " \&.] .I refer プリプロセッサで処理されるべき参照を表現します。 GNU .IR refer (1) マニュアルページは、プリプロセッサの分かり易い参照と、 参考文献データベースの書式を解説しています。 .\" ----- .SS 脚注 .I ms マクロは、柔軟な脚注システムを提供します。 数字付き脚注は、 .B \[rs]** エスケープに、 .B FS および .B FE のマクロに括られた脚注テキストを続けることで、指定可能です。 .PP シンボルの脚注は、印の文字 (例えば .B \[rs](dg はダガー文字) を本文に置き、これに続けて .B FS\ \[rs](dg および .B FE のマクロで括られた脚注テキストを続けることで、指定可能です。 .PP .I groff が脚注番号を印字する方法は、 .B FF レジスタを次のように変えることで、制御可能です: .RS .ne 7 .TP 0 脚注番号を上付き文字として印字し、脚注をインデントします (デフォルト)。 .TP 1 番号に続けてピリオドを印字し (例えば 1.)、脚注をインデントします。 .TP 2 1 に似ていますが、インデントしません。 .TP 3 1 に似ていますが、脚注番号をぶら下がり段落として印字します。 .LP .RE 脚注は、キープおよびディスプレイ中で安全に使用可能ですが、 フローティングキープ中では、番号付き脚注の使用は避けてください。 第 2 の .B \[rs]** を、 .B \[rs]** とこれに対応する .BR .FS の間に置けます。 ただし、各 .B .FS は対応する .B \[rs]** の後に置かれ、 .B .FS の登場順序は対応する .BR \[rs]** の登場順序と同じであることが必要です。 .\" ----- .SS "ヘッダとフッタ" ヘッダとフッタを定義する方法が 2 通りあります: .IP \(bu 3n 文字列 .BR LH , .BR CH , .B RH を使用して、左・中央・右のヘッダを設定します。 .BR LF , .BR CF , .B RF を使用して、左・中央・右のフッタを設定します。 奇数ページと偶数ページを区別しない文書で、もっとも良く動作します。 .IP \(bu .B OH と .B EH のマクロで、偶数ページと奇数ページのヘッダを定義します。 .B OF と .B EF のマクロで、偶数ページと奇数ページのフッタを定義します。 これは、個別の文字列を定義するより柔軟な方法です。 これらのマクロの構文は次の通りです: .RS .IP .BI "\&.OH '" left ' center ' right ' .RE .IP クォート (') は、ヘッダやフッタのテキストに登場しない 任意の文字に置き換え可能です。 .\" ----- .SS マージン マージンの制御は、数値レジスタを設定することで行います。 次の表は、レジスタ名とデフォルトを列挙します: .RS .ne 8 .na .TS cb s cb s s cb s cb s afCW s l s s l s l s. レジスタ 定義 効果対象 デフォルト _ PO T{ ページオフセット (左マージン) T} 次ページ 1i LL T{ 行長 T} 次段落 6i LT T{ ヘッダ/フッタ長 T} 次段落 6i HM T{ トップ (ヘッダ) マージン T} 次ページ 1i FM T{ ボトム (フッタ) マージン T} 次ページ 1i _ .TE .RE .ad .PP 右マージン設定が無いことに注意してください。 ページオフセットと行長の組み合わせが、右マージンを算出する情報を提供します。 .\" ----- .SS "複数カラム" .I ms マクロは、ページにうまく納めるように、テキストを複数カラムに植字可能です。 次のマクロが使用可能です。 複数カラムモードが既に設定済みの場合、これらは改ページを強制します。 しかしながら、現在のモードが単一カラムであり、複数カラムを開始する場合には、 改ページを強制 .I しません 。 .TP .B \&.1C 単一カラムモード。 .TP .B \&.2C 2 カラムモード。 .TP .BI "\&.MC [" width " [" gutter ]] 複数カラムモード。 引数を指定しない場合には、 .B 2C マクロと等価です。 そうでない場合、 .I width は、各カラムの幅であり、 .I gutter はカラム間の空間です。 .B MINGW 数値レジスタが、デフォルトのガター幅です。 .\" ----- .SS "目次の作成" 目次に登場させたいテキストを .B XS および .B XE のマクロで包んでください。 .B TC マクロは、目次を文書の最後に印字し、ページ番号を .B i (ローマ数字の 1) にリセットします。 .PP .BR XS の最初の引数としてページ番号を指定することで、目次を手動で作成可能です。 続くエントリを .B XA マクロを使用して追加してください。 例えば: .RS .PP .ne 8 .nf \&.XS 1 Introduction \&.XA 2 A Brief History of the Universe \&.XA 729 Details of Galactic Formation \&.\|.\|. \&.XE .fi -.RE -.LP +.RE +.LP ページ番号をリセットせずに、手動で生成された目次を印字するには、 -.B PX +.B PX マクロを使用してください。 .PP .B PX もしくは .BR TC に引数 .B no を指定すると、 .I groff は .B \[rs]*[TOC] 文字列で指定されたタイトルの印字を抑制します。 .\" ----- .SH "troff ms との違い" .I "groff ms" マクロは、完全な再実装であり、 元々の AT&T のコードは使用されていません。 .IR groff の拡張機能を使用していますので、これらは AT&T の .IR troff では使用できません。 他の違いは次の通りです: .IP \(bu 3n .I "groff ms" の内部は Unix .I ms の内部とは同じではありません。 したがって、Unix .I ms の実装の細部に依存する書式については .I "groff ms" で機能しないとしてももっともでしょう。 .IP \(bu エラー処理の方針については、 .I "groff ms" は、沈黙したままエラーを無視したりせず、エラーを検出してレポートします。 .IP \(bu Bell Labs 方言は実装されていません。 .IP \(bu Berkeley 方言、特に、 .B TM や .B CT マクロは、実装されていません。 .IP \(bu .I "groff ms" は、互換モードでは機能しません (例えば、 .B \-C オプションなど)。 .IP \(bu タイプライタ様のデバイスには、サポートはありません。 .IP \(bu .I "groff ms" では、カットマークは提供しません。 .IP \(bu 重複した行送りは許されません (代わりに、大きな垂直行送りを使用して下さい)。 .IP \(bu ある Unix .I ms の文書には、数値レジスタの .B CW と .B GW とが、それぞれカラム幅とガター幅 を制御する為に 使用できると述べられています。 これらの数値レジスタは、groff ms では使用されません。 .IP \(bu リセットを引き起こすマクロ (段落や見出し) はインデントを設定します。 インデントを変更するマクロはインデントを増減するのではなく、 むしろインデントを絶対的に設定します。 このことによって、独自のマクロを追加定義している文書に 問題が生じるかも知れません。 これを解決するには、 .B in リクエストを用いずに、代わりに .B RS や .B RE マクロを用いて下さい。 .IP \(bu 数値レジスタの .B GS は、 .I "groff ms" マクロによって 1 に設定されます。 しかし、この数値レジスタは Unix .I ms マクロでは使用されていません。 このレジスタの目的は、 Unix .I ms か .I "groff ms" かのどちらによってフォーマットされているのかを判定する 必要のある文書によって利用されることです。 .br .ne 22 .SS 文字列 次の文字列は、 .I "groff ms" マクロを英語以外の言語に適合させるために 再定義することができます: .TS center; cb cb afCW l . 文字列 デフォルト値 _ REFERENCES References ABSTRACT ABSTRACT TOC Table of Contents MONTH1 January MONTH2 February MONTH3 March MONTH4 April MONTH5 May MONTH6 June MONTH7 July MONTH8 August MONTH9 September MONTH10 October MONTH11 November MONTH12 December _ .TE .PP .B \[rs]*- 文字列は、em ダッシュを印字します \[em] こんな感じです。 .\" ----- .SS テキスト設定 .B FAM 文字列は、デフォルトのフォントファミリを設定します。 この文字列が初期化時に未定義の場合、Times に設定されます。 .LP 脚注のポイントサイズ、垂直行送り幅、そして段落間の行送り幅は、 数値レジスタの .BR FPS , .BR FVS , .B FPD で制御されます。 初期化時に、これらは、それぞれ .BR \[rs]n(PS-2 , .BR \[rs]n[FPS]+2 , .B \[rs]n(PD/2 に設定されます。 しかし、これらのレジスタのいずれかでも初期化前に定義されていれば、 初期化マクロはこれらを変更しません。 .LP -.RB ( .hy +.RB ( hy リクエストによって設定される) ハイフネーションフラグは、 .B HY レジスタから取られて設定されます。 デフォルトは 14 です。 .PP (元々 Berkeley の .I ms バージョンで定義された) 進歩したアクセント記号は、文書の先頭で .B AM マクロを定義することで使用可能です。 対象となる文字の直後に、アクセントを定義する文字列を指定することで、 ほとんどの文字にアクセントを置けます。 例えば -.B n\[rs]*~ +.B n\[rs]*~ は、n の上にチルダを置いたものを生成します。 .\" ----- .SH "命名規則" .LP 次のような命名規則が、マクロ、文字列そして数値レジスタに適用されています。 .I "groff ms" マクロを使用する文書に利用出来る外部名は、大文字と数字だけからなります。 .LP 内部的には、マクロはモジュールに分割されます。 命名規則は次の通りです: .IP \(bu 3n ある一つのモジュールの中だけで使用される名前は、 .IB \%module * name\fR という形をしています。 .IP \(bu 定義されているモジュールの外部で使用される名前は、 .IB \%module @ name\fR という形をしています。 .IP \(bu ある特別の環境に関わる名前は、 .IB \%environment : name という形をしています。 これらの名前は、 .B par モジュールの中でのみ使われます。 .IP \(bu .I name には、モジュールは接頭辞としてつきません。 .IP \(bu 組み合わされた名前で配列を実装するのに使われるものは、 .IB \%array ! index\fR という形をしています。 .PP 以上より groff ms では以下の名前を予約しています: .IP \(bu 3n .BR * , .BR @ , .BR : を含んでいる名前。 .IP \(bu 大文字と数字だけを含んでいる名前。 .SH 関連ファイル .B /usr/share/tmac/ms.tmac .RB ( s.tmac のラッパファイル) .br .B /usr/share/tmac/s.tmac .SH "関連項目" .BR groff (1), .BR troff (1), .BR tbl (1), .BR pic (1), .BR eqn (1), .BR refer (1), .I Groff: The GNU Implementation of troff by Trent Fisher and Werner Lemberg. .SH 作者 -元々のマニュアルページを James Clark 等が記述しました。 +元々のマニュアルページを James Clark +.\".IR "et al" +等 +が記述しました。 Larry Kollar (\fIlkollar@despammed.com\fR) が書き直しました。 .\" Local Variables: .\" mode: nroff .\" End: diff --git a/ja_JP.eucJP/man/man7/groff_www.7 b/ja_JP.eucJP/man/man7/groff_www.7 index 70fd3a83af..83d4341c37 100644 --- a/ja_JP.eucJP/man/man7/groff_www.7 +++ b/ja_JP.eucJP/man/man7/groff_www.7 @@ -1,421 +1,426 @@ .\" $FreeBSD$ .TH GROFF_WWW 7 "11 October 2002" "Groff Version 1.19" .\" Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. .\" Written by Gaius Mulley (gaius@glam.ac.uk) .\" .\" This file is part of groff. .\" .\" groff is free software; you can redistribute it and/or modify it under .\" the terms of the GNU General Public License as published by the Free .\" Software Foundation; either version 2, or (at your option) any later .\" version. .\" .\" groff is distributed in the hope that it will be useful, but WITHOUT ANY .\" WARRANTY; without even the implied warranty of MERCHANTABILITY or .\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License .\" for more details. .\" .\" You should have received a copy of the GNU General Public License along .\" with groff; see the file COPYING. If not, write to the Free Software .\" Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. .\" .\" user level guide to using the -mwww macroset .\" . .do mso www.tmac . .\" we need the .LK here as we use it in the middle as an example -- .\" once the user requests .LK then the automatic generation of links .\" at the top of the document is suppressed. .LK . . .SH 名称 groff_www \- ウェブページのオーサリング用 groff マクロ .HR .SH 書式 .B "groff \-mwww" [ options ] file ... . . .SH 解説 このマニュアルページは、GNU \-mwww マクロについて解説しています。 これは、groff ドキュメント整形システムの一部です。 このマニュアルページは、ごく基本的なガイドに過ぎませんし、 html デバイスドライバ -.RB (grohtml) +.RB ( grohtml ) は完全に書き直されましたがいまだにアルファ版という段階です。 多くの人達がテストする機会を持てるようにするため、 このマクロを配布物に含めているのです。 -このマクロファイルは、\fC-Thtml\fP を使用すれば -(\fCtroffrc\fP ファイルによって) 自動的に呼ばれるのだということに +このマクロファイルは、 +.BR \-Thtml +を使用すれば +.RB ( troffrc +ファイルによって) 自動的に呼ばれるのだということに 注意してください。 .PP ハイパーリンクが動作することを確認するには、このマニュアルページを .B grohtml デバイスを用いて整形してください。 .PP このマクロセットで見つかる機能の概要です。 .ta 2iL .nf \&.HX 自動的なヘッダレベルの切り捨て。 $1 がセクション/ヘッダを指します。 \&.BCL ウェブページの色を指定します。 \&.BGIMG 背景画像を指定します。 \&.URL 2 つのパラメータを用いて URL を作成します。 \&.FTP FTP への参照を作成します。 \&.MTO HTML email アドレスを作成します。 \&.FTP FTP への参照を作成します。 \&.TAG HTML の name を作成します。 \&.IMG 画像ファイルを挿入します。 \&.PIMG PNG 画像を挿入します。 \&.MPIMG PNG を余白に置き、その周辺をテキストで包みます。 \&.HnS 見出しを開始します。 \&.HnE 見出しを終了します。 \&.LK 自動的に収集されたリンクを出力します。 \&.HR 水平罫線を出力します。 \&.NHR 罫線の自動生成を抑制します。 \&.HTL HTML タイトルのみを作成します。 \&.ULS 順序無しリストを開始します。 \&.ULE 順序無しリストを終了します。 \&.LI リスト項目を挿入します。 \&.DC ドロップキャピタルを作成します。 \&.HTML HTML の生リクエストをデバイスドライバに渡します。 .fi .PP Output of the .BR pic , .BR eqn , .BR refer , .B tbl プリプロセッサの出力を入力として受け付けることができます。 . . .SH リクエスト .TP .B HX 見出しに対して自動的に作成されるリンクの 切り捨てレベルを決定します。 パラメータに 2 を指定すると、 .B grohtml は .B .NH\ 1 と .B .NH\ 2 にはリンクのリストを作成しますが、 .BR .NH\ 3 に対してはしません。 .RS .IP .nf .B .HX 0 .fi .RE .IP とすると、 .B grohtml がリンクを生成しないようになります。 自動的な見出しをオフにする別の方法は、 .BR groff -のコマンドラインスイッチ \fC-P-l\fP です。 +のコマンドラインスイッチ +.B \-P\-l +です。 . .TP .B BCL 5 つパラメータを取ります: 文字色、背景色、アクティブな ハイパーリンクの色、まだ訪問したことがない ハイパーリンクの色、そして訪問したことのある ハイパーリンクの色です。 . .TP .B BGIMG このマクロの唯一のパラメータは、背景画像ファイルを示します。 . .TP .B URL 2 つあるいは 3 つのパラメータを使用して .TAG URL URL を生成します。 第 1 パラメータはリンク名、第 2 パラメータは実際の URL、 そして第 3 パラメータは省略可能であり直後に印字されます。 実際の URL を印字中はハイフネーションは無効化されます。 明示的な改行位置を .B \[rs]: エスケープで挿入すべきです。 以下に .URL http://\:foo.\:org/ "foo" : をどのようにエンコードすべきかを示します: .RS .IP .B .URL http://\[rs]:foo.\[rs]:org/ "foo" : .RE .IP これを .B \-Thtml 以外のドライバで処理すると、次のようになります: .RS .IP \m[blue]foo\m[] \[la]\f[C]http://foo.org\f[]\[ra]: .RE .IP URL マクロはどんなタイプでも構いません。 例えば .URL pic.html "Eric Raymond's pic guide" は次のように参照できます: .RS .IP .B .URL pic.html \[dq]Eric Raymond's pic guide\[dq] .RE . .TP .B MTO HTML 用の電子メール参照を生成します。 第 2 引数はオプションであり、ブラウザに表示されるテキストです。 そして、第 3 引数もオプションであり、これは第 2 引数の直後に 表示されるものです。 実際の電子メールアドレスを印字する間、ハイフネーションは無効化されます。 例えば .MTO joe@user.org "Joe User" は次のように実現されます: .RS .IP .B .MTO joe@user.org \[dq]Joe User\[dq] .RE .IP 実際には、groff では URL はテキストとしての空白を 一切使わないものとして扱われることに注意してください。 このことは、いくつかの問題の原因となりますのでバグだと 考えられるでしょう。 これを回避するために、 .B www.tmac は他に影響を 与えない空白に展開される幅 0 の文字を挿入します .RB ( \-Thtml 付きで実行された場合のみ)。 . .TP .B FTP データが FTP 経由で取得できることを示します。 第 1 引数は URL で、 第 2 引数は、ブラウザに表示されるテキストです。 第 3 引数は、先に述べたマクロと同様に、第 2 引数の 直後に表示されるテキストとして扱われます。 第 2 および第 3 の引数はオプションです。 実際の URL を印字する間、ハイフネーションは無効化されます。 例として、これは、 例として、これは、 .FTP ftp://\:ftp.gnu.org/ "GNU ftp server" です。 このマクロの例は、次のように指定します: .RS .IP .B .FTP ftp://\[rs]:ftp.gnu.org/ \[dq]GNU ftp server\[dq] . .RE . .TP .B TAG 引数から HTML の name タグを生成します。 このタグは、 .URL #URL URL マクロを使って参照できます。 御覧の通り、同一ドキュメント内の参照ですので、タグ名の前には .B # を付けなくてはなりません。 このリンクは、先の URL マクロの記述の中で TAG を置くことで 実現したのです。ソースは次のようになります: .RS .IP .nf .ft B \&.TP \&.B URL は、 \&.TAG URL すなわち 2 個か 3 個の引数を使用する URL を作成します。 \&.\|.\|. .fi .ft P .RE . .TP .B IMG ドキュメントに画像を含めます。 第 2 のオプションは、水平位置、すなわち右・左・中央を指定します .RB ( \-R , .BR \-L , .BR \-C ) 。 第 2 引数は画像ファイルです。 オプションの第 3 引数と第 4 引数は、幅と高さです。 幅を指定しないと、デフォルトの 1 インチになります。 高さを指定しないと、幅と同じになります。 これは、HTML の IMG タグにマップされます。 PNG 画像を挿入する場合、 .B PIMG マクロを使用することをお勧めします。 . .TP .B PIMG PNG フォーマットの画像を含めます。 このマクロは .B IMG マクロとまったく同じパラメータを取ります。 PostScript と HTML デバイスと連携動作するという利点があります。 また、 .B netpbm パッケージの .BR pngtopnm , .BR pnmcrop , .BR pnmtops を使用して、自動的に画像を EPS フォーマットに変換するという利点があります。 ドキュメントを .B \-Thtml で処理しない場合、groff の .B \-U オプションが必要です。 . .TP .B MPIMG PNG 画像を余白に置き、その周辺をテキストで包みます。 第 1 パラメータは、左か右の整列位置 .RB ( \-L mataha .BR \-R ) です。 第 2 引数がファイル名です。 オプションの第 3 引数と第 4 引数は、幅と高さです。 幅を指定しないと、デフォルトの 1 インチになります。 高さを指定しないと、幅と同じになります。 . .TP .B HnS 見出しを開始します。 見出しレベルは、第 1 引数で指定します。 URL を含む見出しにはこのマクロを使用してください。 例: .RS .IP .nf .ft B \&.HnS 1 \&.HR GNU Troff \&.URL http://groff.ffii.org (Groff) \&\(em a \&.URL http://www.gnu.org/ GNU \&project. \&Hosted by \&.URL http://ffii.org/ FFII . \&.HR \&.HnE .ft P .fi .RE . .TP .B HnE 見出しを終了します。 . .TP .B LK .TAG LK この位置に自動生成リンクを置くよう、grohtml に強制します。 マニュアルページを .B \-Thtml で処理した場合、リンクはここに見えます。 . .LK . . .SH セクション見出しへのリンク デフォルトでは .B grohtml はセクションの見出しすべてへのリンクを生成し、 リンクを HTML ドキュメントの先頭に配置します (オフにしたり位置を変えるための詳細は .URL #LK LINKS を参照してください)。 . .TP .B HR 水平方向の罫線を幅いっぱいに作成します。 . .TP .B NHR grohtml がデフォルトで生成する、トップとボトムの罫線の生成を抑制します。 . .TP .B HTL HTML タイトルのみを生成します。 .B ms マクロパッケージの .B TL マクロは、HTML タイトルと H1 見出しの両方を生成します。 これを使って、サーチエンジン用の食材として HTML タイトルを提供し、 ドキュメント中では画像のタイトルを使用できます。 . .TP .B HTML このマクロより後の全テキストは生の HTML として扱われます。 .B \-Thtml 無しでドキュメントを処理すると、このマクロは無視されます。 内部的に、他の高位のマクロの構成要素としてこのマクロが使用されています。 .IP 例えば .B BGIMG マクロは次のように定義されています。 .RS .IP .nf .ft B \&.de BGIMG \&. HTML \&.. .ft P .fi .RE . .TP .B DC ドロップキャピタルを生成します。 第 1 パラメータが、ドロップされる文字であり大きくなります。 第 2 パラメータが、これに続くテキストであり、 この高さを最初の文字は越えてはなりません。 オプションの 第 3 パラメータは、ドロップされた文字の色です。 . . .SH GROHTML の制限 .LP .B tbl 情報は、現在 PNG 画像として描かれます。 . . .SH 関連ファイル /usr/share/tmac/www.tmac . . .SH "関連項目" .BR groff (1), .BR troff (1) .BR grohtml (1), .BR netpbm (1) . . .SH 作者 .B grohtml は .MTO gaius@glam.ac.uk "Gaius Mulley" が書きました。 . . .SH バグ バグレポートは .MTO bug-groff@\:gnu.org "Groff Bug Mailing List" へ送ってください。 バグが再現できるように、完全で自己完結している例を付けてください。 また、どのバージョンの groff を使っているかも伝えてください。 . .\" Local Variables: .\" mode: nroff .\" End: diff --git a/ja_JP.eucJP/man/man7/hier.7 b/ja_JP.eucJP/man/man7/hier.7 index 858b98182c..581664d547 100644 --- a/ja_JP.eucJP/man/man7/hier.7 +++ b/ja_JP.eucJP/man/man7/hier.7 @@ -1,857 +1,863 @@ .\" Copyright (c) 1990, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)hier.7 8.1 (Berkeley) 6/5/93 -.\" %FreeBSD: src/share/man/man7/hier.7,v 1.110 2004/08/16 15:45:24 marius Exp % +.\" %FreeBSD: src/share/man/man7/hier.7,v 1.110.2.2 2005/03/01 08:46:27 jkoshy Exp % .\" .\" $FreeBSD$ .Dd August 16, 2004 .Dt HIER 7 .Os .Sh 名称 .Nm hier .Nd ファイルシステムのレイアウト .Sh 解説 ファイルシステムの階層構成についての概略です。 .Bl -tag -width ".Pa /libexec/" .It Pa / ファイルシステムのルートディレクトリ。 .It Pa /bin/ ユーザ用ユーティリティの基本的なもの。 シングルユーザ環境、マルチユーザ環境どちらでも使用する。 .It Pa /boot/ オペレーティングシステムのブートストラップ中に使用される プログラムと設定ファイル。 .Pp .Bl -tag -width ".Pa defaults/" -compact .It Pa defaults/ デフォルトのブートストラップ用設定ファイル。 .Xr loader.conf 5 参照。 .It Pa kernel/ カーネルの pure な実行可能ファイル (ブート時にメモリに読み込まれる オペレーティングシステム)。 .It Pa modules/ サードパーティのロード可能なカーネルモジュール。 .Xr kldstat 8 参照。 .El .It Pa /cdrom/ CD-ROM ドライブのデフォルトマウントポイント .Xr ( sysinstall 8 が作成します)。 .It Pa /compat/ 通常は、 .Pa /usr/compat へのリンクです。 そうでない場合、 .Pa /usr/compat コメントがあてはまります。 .Xr ( sysinstall 8 が作成します)。 .It Pa /dev/ -ブロックデバイスおよびキャラクタデバイスファイル。 +.Xr devfs 5 +で管理されるデバイススペシャルファイル .Pp -.Bl -tag -width ".Pa fd/" -compact +.Bl -tag -width ".Pa net/" -compact .It Pa fd/ ファイル記述子ファイル。 .Xr \&fd 4 参照。 +.It Pa net/ +ネットワークデバイス .El .It Pa /dist/ .Xr sysinstall 8 が使用するマウントポイント。 .It Pa /etc/ システムの設定ファイル、およびスクリプト。 .Pp .Bl -tag -width ".Pa defaults/" -compact .It Pa defaults/ デフォルトのシステム設定ファイル。 .Xr rc 8 参照。 .It Pa gnats/ gnats 設定ファイル。 .Xr send-pr 1 参照。 .It Pa isdn/ isdn4bsd の設定ファイル。 .Xr isdnd 8 参照。 .It Pa localtime ローカルタイムゾーン情報。 .Xr ctime 3 参照。 .It Pa mail/ sendmail の制御情報。 .It Pa mtree/ mtree 設定ファイル。 .Xr mtree 8 参照。 .It Pa namedb/ named 設定ファイル。 .Xr named 8 参照。 .It Pa pam.d/ プラグ可能認証モジュール (Pluggable Authentication Modules; PAM) ライブラリの設定ファイル。 .Xr pam 8 参照。 .It Pa periodic/ .Xr cron 8 により、毎日/毎週/毎月実行されるスクリプト。 .Xr periodic 8 参照。 .It Pa ppp/ .Xr ppp 8 ppp 設定ファイル。 .Xr ppp 8 参照。 .It Pa ssl/ OpenSSL 設定ファイル。 .El -.It Pa /kernel -カーネルの pure な実行可能ファイル (ブート時にメモリに読み込まれる -オペレーティングシステム)。 -.It Pa /modules/ -ロード可能なカーネルモジュール。 -.Xr kldstat 8 -参照。 .It Pa /lib/ .Pa /bin と .Pa /sbin のバイナリに必要な、重要なシステムライブラリ。 .Pp .Bl -tag -width ".Pa geom/" -compact .It Pa geom/ .Xr geom 8 ユーティリティ用のクラス特有のライブラリ。 .El .It Pa /libexec/ .Pa /bin と .Pa /sbin のバイナリに必要な、重要なシステムユーティリティ。 .It Pa /mnt/ 通常、システム管理者が一時的なマウントポイントとして使用する 空のディレクトリ。 .It Pa /proc/ プロセスファイルシステム。 .Xr procfs 5 , .Xr mount_procfs 8 参照。 .It Pa /rescue/ 緊急回復時に使用される、静的にリンクされたプログラム群です。 .Xr rescue 8 を参照してください。 .It Pa /root/ root のホームディレクトリ。 .It Pa /sbin/ システムプログラム、および基本的な管理者用ユーティリティ。 シングルユーザ環境、マルチユーザ環境どちらでも使用する。 .It Pa /stand/ スタンドアロン環境で使用されるプログラム。 .It Pa /tmp/ システムリブートをまたがった永続性が保証されない、一時ファイル。 .It Pa /usr/ ユーザ用ユーティリティ、およびアプリケーションの大部分を含む。 .Pp .Bl -tag -width ".Pa libdata/" -compact .It Pa bin/ 一般的なユーティリティ、プログラミングツール、アプリケーション。 .It Pa compat/ Linux 等の他のオペレーティングシステムとのバイナリ互換性をサポートするために 必要なファイル .Xr ( sysinstall 8 が作成します)。 .It Pa games/ 有用でちょっとふざけたプログラム。 .It Pa include/ 標準 C 言語インクルードファイル。 .Pp .Bl -tag -width ".Pa kerberos5/" -compact .It Pa altq/ ALTQ 用の C 言語インクルードファイル。 .It Pa arpa/ インターネットサービスプロトコルのための C 言語インクルードファイル。 .It Pa bsnmp/ SNMP デーモン用の C 言語インクルードファイル。 .It Pa c++/ C++ 言語インクルードファイル。 .It Pa cam/ Common Access Methods Layer 用 C インクルードファイル。 .Bl -tag -width ".Pa kerberos5/" -compact .It Pa scsi/ CAM 上の SCSI デバイス。 .El .It Pa dev/ 様々な .Fx デバイスのプログラミング用の C インクルードファイル。 .Bl -tag -width ".Pa kerberos5/" -compact .It Pa ic/ ドライバ/バス独立なハードウェア回路を記述する、様々なヘッダファイル。 .It Pa ofw/ Open Firmware サポート。 .It Pa ppbus/ パラレルポートバス。 .Xr ppbus 4 参照。 -.It usb/ +.It Pa usb/ USB サブシステム。 .It Pa utopia/ ATM インタフェース用の物理チップドライバ。 .Xr utopia 4 参照。 .It Pa wi/ .Xr wi 4 WaveLAN ドライバ。 .El .It Pa fs/ .Bl -tag -width ".Pa kerberos5/" -compact .It Pa fdescfs/ プロセス毎のファイル記述子ファイルシステム。 .It Pa fifofs/ .St -p1003.1 FIFO ファイルシステム。 .It Pa msdosfs/ MS-DOS ファイルシステム。 .It Pa ntfs/ NTFS ファイルシステム。 .It Pa nullfs/ ループバックファイルシステム。 .It Pa nwfs/ NetWare ファイルシステム。 .It Pa portalfs/ ポータルファイルシステム。 .It Pa procfs/ プロセスファイルシステム。 .It Pa smbfs/ SMB/CIFS ファイルシステム。 .It Pa udf/ UDF ファイルシステム。 .It Pa umapfs/ uid/gid マッピングを変えるファイルシステム .It Pa unionfs ユニオンファイルシステム。 .El .It Pa geom/ GEOM フレームワーク。 .Bl -tag -width ".Pa kerberos5/" -compact .It Pa concat/ CONCAT GEOM クラス。 .It Pa gate/ GATE GEOM クラス。 .It Pa mirror/ MIRROR GEOM クラス。 .It Pa nop/ NOP GEOM クラス。 .It Pa raid3/ RAID3 GEOM クラス。 .It Pa stripe/ STRIPE GEOM クラス。 .El .Pp .It Pa isc/ ISC ユーティリティライブラリ libisc インクルードファイル。 .It Pa isofs/ .Bl -tag -width ".Pa kerberos5/" -compact .It Pa cd9660/ iso9660 形式ファイルシステム。 .El .It Pa libmilter/ libmilter 用の C インクルードファイルであり、 .Xr sendmail 8 メールフィルタ の API です。 .It Pa machine/ マシン固有機能の C 言語インクルードファイル。 .It Pa net/ その他のネットワーク機能用 C 言語インクルードファイル。 .It Pa netatalk/ Appletalk プロトコル。 .It Pa netatm/ ATM のインクルードファイル。 .Xr atm 8 参照。 .It Pa netinet/ インターネット標準プロトコル用 C 言語インクルードファイル。 .Xr inet 4 参照。 .It Pa netinet6/ インターネットプロトコルバージョン 6 用の C インクルードファイル。 .Xr inet6 4 参照。 .It Pa netipx/ IPX/SPX プロトコルスタック。 .It Pa netkey/ カーネルの鍵管理サービス。 .It Pa netnatm/ NATM インクルードファイル。 .Xr natm 4 参照。 .Bl -tag -width ".Pa kerberos5/" -compact .It Pa api/ シグナル API 用インクルードファイル。 .It Pa msg/ シグナルメッセージの説明と関連する関数の宣言をしているインクルードファイル。 .It Pa saal/ シグナル AAL 層用のインクルードファイル。 .It Pa sig/ include files for the UNI signalling protocol UNI のシグナルプロトコル用のインクルードファイル。 .El .It Pa netsmb/ SMB/CIFS リクエスタ。 .It Pa nfs/ NFS (Network File System) 用 C 言語インクルードファイル。 .It Pa objc/ Objective C のインクルードファイル。 -.It Pa posix4/ -POSIX リアルタイム拡張のインクルードファイル。 -.Xr p1003_1b 9 -参照。 .It Pa openssl/ OpenSSL (Cryptography/SSL ツールキットの) ヘッダ。 .It Pa pccard/ PC-CARD コントローラ。 +.It Pa posix4/ +POSIX リアルタイム拡張のインクルードファイル。 +.Xr p1003_1b 9 +参照。 .It Pa protocols/ Berkeley サービスプロトコル用 C 言語インクルードファイル。 .It Pa readline/ ユーザからの一行入力機能 (編集機能付き)。 .Xr readline 3 参照。 .It Pa rpc/ リモート手続き呼び出し。 .Xr rpc 3 参照。 .It Pa rpcsvc/ RPC サービス構造の定義。 .Xr rpc 3 参照。 .It Pa security/ PAM。 .Xr pam 8 参照。 .It Pa sys/ システム用 C 言語インクルードファイル (カーネルデータ構造)。 .\" .It Pa tcl/ .\" Tcl 言語。 .\" .Xr Tcl n .\" 参照。 .\" .Bl -tag -width ".Pa kerberos5/" -compact .\" .It Pa generic/ .\" ??? .\" .It Pa unix/ .\" ??? .\" .El .It Pa ufs/ UFS (U-word File System) 用 C 言語インクルードファイル。 .Bl -tag -width ".Pa kerberos5/" -compact .It Pa ffs/ Fast filesystem。 .It Pa ufs/ UFS ファイルシステム。 .El .It Pa vm/ 仮想記憶。 .Xr vmstat 8 参照。 .El .Pp .It Pa lib/ -アーカイブライブラリ。 +共有およびアーカイブ +.Xr ar 1 Ns \ 型 +ライブラリ .Bl -tag -width Fl -compact .It Pa aout/ a.out アーカイブライブラリ。 .It Pa compat/ 互換性維持用の共有ライブラリ。 .Bl -tag -width Fl -compact .It Pa aout/ a.out 後方互換ライブラリ。 .El .El .Pp .It Pa libdata/ その他のユーティリティデータファイル。 .Bl -tag -width Fl -compact .It Pa gcc/ .Xr gcc 1 の設定用データ .It Pa ldscripts/ リンカスクリプト。 .Xr ld 1 参照。 .It Pa lint/ さまざまな lint 用ライブラリ (事前に構築されている)。 .Xr lint 1 参照。 .El .Pp .It Pa libexec/ システムデーモンおよびシステムユーティリティ。 (他のプログラムから実行されるもの)。 .Bl -tag -width Fl -compact .It Pa aout/ a.out 実行形式を操作するユーティリティ。 .It Pa elf/ ELF 実行形式を操作するユーティリティ。 .It Pa lpr/ LP プリントシステムのユーティリティとフィルタ。 .Xr lpr 1 参照。 .It Pa sendmail/ .Xr sendmail 8 バイナリ。 .Xr mailwrapper 8 参照。 .It Pa sm.bin/ .Xr sendmail 8 用制限付きシェル。 .Xr smrsh 8 参照。 .El .Pp .It Pa local/ ローカルの実行可能ファイル、ライブラリなど。 .Fx ports フレームワークのデフォルトのインストール先としても使用されます。 local/以下では、 .Nm で /usr に関して 記述された一般的な配置が使用されます。 例外は、man ディレクトリ (local/share/ の下ではなく local/ の直下に存在)、 ports のドキュメント (share/doc// に置かれます)、 /usr/local/etc (/etc の模倣) です。 .It Pa obj/ アーキテクチャ依存のターゲットツリー。 /usr/src ツリーを構築することで作成される。 .It Pa ports/ .Fx ports コレクション (オプション扱い)。 .It Pa sbin/ (ユーザによって実行される) システムデーモン、およびシステムユーティリティ。 .It Pa share/ アーキテクチャに依存しないファイル。 .Pp .Bl -tag -width ".Pa calendar/" -compact .It Pa calendar/ 事前に組み立てられた calendar ファイルいろいろ。 .Xr calendar 1 参照。 .It Pa dict/ 単語リスト。 .Xr look 1 参照。 .Pp .Bl -tag -width Fl -compact .It Pa freebsd .Fx 固有の術語、固有の名前、隠語。 .It Pa words 一般の単語 .It Pa web2 Webster's 2nd International からの単語 .It Pa papers/ リファレンスデータベース。 .Xr refer 1 参照。 .El .Pp .It Pa doc/ その他の文書。 -( -.Tn USENIX +.Pf ( Tn USENIX association から入手できる) .Bx マニュアルのほとんどのソース。 .Bl -tag -width Fl -compact .It Pa FAQ/ しばしば行なわれる質問とその答え (Frequently Asked Questions)。 .It Pa IPv6/ IPv6 の実装に関する注。 .It Pa bind/ BIND (Berkeley Internet Name Domain) に属する文書。 .It Pa es/ /usr/share/doc 中の文書のスペイン語への翻訳。 .It Pa handbook/ .Fx ハンドブック .It Pa ja/ /usr/share/doc 中の文書の日本語への翻訳。 .It Pa ncurses/ ncurses に属する HTML 文書。 .Xr ncurses 3X 参照 .It Pa ntp/ Network Time Protocol に属する HTML 文書。 .It Pa papers/ UNIX 関連の論文 .It Pa psd/ UNIX プログラマ用補助文書 .It Pa ru/ /usr/share/doc 中の文書のロシア語への翻訳。 .It Pa smm/ UNIX システム管理者用マニュアル .It Pa tutorials/ .Fx チュートリアル。 .It Pa usd/ UNIX ユーザ用補助文書 .It Pa zh/ /usr/share/doc 中の文書の中国語への翻訳。 .El .Pp .It Pa examples/ 一般ユーザやプログラマ向けのさまざまな用例。 .It Pa games/ 各種のゲームで使用される ASCII テキストファイル。 .It Pa groff_font/ デバイス名ごとに用意されたデバイス記述ファイル。 .It Pa info/ GNU Info ハイパーテキストシステム。 .It Pa isdn/ ISDN。 .It Pa locale/ ローカル化関係のファイル。 .Xr setlocale 3 参照。 .It Pa man/ マニュアルページ。 .It Pa me/ me マクロパッケージで使用するマクロ。 .Xr me 7 参照。 .It Pa misc/ その他システム全体の ASCII テキストファイル。 .Bl -tag -width Fl -compact .It Pa fonts/ ??? .It Pa pcvtfonts/ pcvt フォント。 .Xr pcvt 4 参照。 .It Pa termcap 端末の特性を記述するデータベース。 .Xr termcap 5 参照。 .El .It Pa mk/ make 用テンプレート。 .Xr make 1 参照。 .It Pa nls/ 各国語サポート (National Language Support) ファイル。 .Xr mklocale 1 参照。 .It Pa pcvt/ pcvt の文書とその他の例。 .Xr pcvt 4 参照。 .It Pa security/ .Xr mac_lomac 4 等のセキュリティポリシ用のデータファイル。 .It Pa sendmail/ .Xr sendmail 8 の設定ファイル。 .It Pa skel/ 新しいアカウントのための .Pa .\& (ドット) ファイルの例。 .It Pa snmp/ SNMP デーモン用の MIB やサンプルファイル、ツリー定義。 .Bl -tag -width Fl -compact .It Pa defs/ .Xr gensnmptree 1 とともに使用されるツリー定義ファイル。 .It Pa mibs/ MIB ファイル。 .El .It Pa syscons/ syscons が使用するファイル。 .Xr syscons 4 参照。 .Bl -tag -width ".Pa scrnmaps/" -compact .It Pa fonts/ コンソールフォント。 .Xr vidcontrol 1 と .Xr vidfont 1 参照。 .It Pa keymaps/ コンソールキーボードマップ。 .Xr kbdcontrol 1 と .Xr kbdmap 1 参照。 .It Pa scrnmaps/ コンソールスクリーンマップ。 .El .It Pa tabset/ -各種端末用タブ記述ファイル。termcap ファイルの中で使用される。 +各種端末用タブ記述ファイル。 +termcap ファイルの中で使用される。 .Xr termcap 5 参照。 .It Pa tmac/ テキスト処理マクロ。 .Xr nroff 1 および .Xr troff 1 参照。 .It Pa vi/ .Xr vi 1 のローカライズサポートとユーティリティ。 .It Pa zoneinfo/ タイムゾーン設定情報。 .Xr tzfile 5 参照。 .El .It Pa src/ .Bx とサードパーティとローカルのソースファイル。 .Pp .Bl -tag -width ".Pa kerberos5/" -compact .It Pa bin/ /bin 内のファイルのソース。 .It Pa contrib/ 寄贈されたソフトウェアのソース。 .It Pa crypto/ 寄贈された暗号化ソフトウェアのソース。 .It Pa etc/ /etc 内のファイルのソース。 .It Pa games/ /usr/games 内のファイルのソース。 .It Pa gnu/ GNU General Public License で保護されたユーティリティ。 .It Pa include/ /usr/include 内のファイルのソース。 .It Pa kerberos5/ Kerberos version 5 のビルドインフラストラクチャ。 .It Pa lib/ /usr/lib 内のファイルのソース。 .It Pa libexec/ /usr/libexec 内のファイルのソース。 .It Pa release/ .Fx のリリースを生成するために必要なファイル。 .It Pa sbin/ /sbin 内のファイルのソース。 .It Pa secure/ /usr/src/crypto 中のファイル用のビルドディレクトリ。 .It Pa share/ /usr/share 内のファイルのソース。 .It Pa sys/ カーネルのソースファイル。 .It Pa tools/ .Fx のメンテナンスとテストに使用するツール。 .It Pa usr.bin/ /usr/bin 内のファイルのソース。 .It Pa usr.sbin/ /usr/sbin 内のファイルのソース。 .El .Pp .It Pa X11R6/ X11R6 配布パッケージの実行可能形式ファイル、ライブラリなど (オプション扱い)。 .Bl -tag -width ".Pa include/" -compact .It Pa bin/ X11R6 のバイナリ (サーバ、ユーティリティ、ローカルな packages/ports)。 .It Pa etc/ X11R6 の設定ファイルとスクリプト。 .It Pa include/ X11R6 のインクルードファイル。 .It Pa lib/ X11R6 のライブラリ。 .It Pa man/ X11R6 のマニュアルファイル。 .It Pa share/ アーキテクチャ独立なファイル。 .El .El .It Pa /var/ さまざまな用途のログファイル、一時ファイル、遷移的ファイル、 スプールファイル。 .Pp .Bl -tag -width ".Pa preserve/" -compact .It Pa account/ システムアカウンティングファイル。 .Pp .Bl -tag -width Fl -compact .It Pa acct 実行アカウントファイル。 .Xr acct 5 参照。 .El .Pp .It Pa at/ 指定した時間に動くコマンドのスケジュールファイル。 .Xr \&at 1 参照。 .Bl -tag -width ".Pa preserve/" -compact .It Pa jobs/ ジョブファイルを含むディレクトリ。 .It Pa spool/ 出力スプールファイルを含むディレクトリ。 .El .Pp .It Pa backups/ さまざまなバックアップファイル。 .It Pa crash/ カーネルクラッシュダンプを保存するデフォルトのディレクトリ。 .Xr crash 8 と .Xr savecore 8 参照。 .It Pa cron/ cron が使用するファイル。 .Xr cron 8 参照。 .Bl -tag -width ".Pa preserve/" -compact .It Pa tabs/ crontab ファイル。 .Xr crontab 5 参照。 .El .Pp .It Pa db/ -システム固有のさまざまなデータベースファイル。自動生成される。 +システム固有のさまざまなデータベースファイル。 +自動生成される。 .It Pa empty/ 特別に空のディレクトリが必要なプログラムによって使用される、空のディレクトリ。 例えば、特権分離のために .Xr sshd 8 が使用します。 .Xr sshd 8 参照 .It Pa games/ さまざまなゲームのステータスおよびスコアファイル。 .It Pa heimdal/ Kerberos サーバデータベース。 .Xr kdc 8 参照。 .It Pa log/ さまざまなシステムログファイル。 .Pp .Bl -tag -width Fl -compact .It Pa wtmp login/logout ログ。 .Xr wtmp 5 参照。 .El .Pp .It Pa mail/ ユーザのメールボックスファイル。 .It Pa msgs/ システムメッセージのデータベース。 .Xr msgs 1 参照。 .It Pa preserve/ エディタの不慮の死の際に保存されるファイルを一時的に安置するディレクトリ。 .Xr \&ex 1 参照。 .It Pa quotas/ ファイルシステムのクォータ情報のファイル。 .It Pa run/ ブートされてからのシステムについての各種情報を記述した システム情報ファイル。 .Pp .Bl -tag -width Fl -compact .It Pa named/ .Dq bind ユーザが書き込み可能です。 .Xr named 8 参照。 .It Pa ppp/ コマンドの接続ソケット用に、 .Dq network グループが書き込み可能です。 .Xr ppp 8 参照。 .It Pa utmp 現在のユーザについてのデータベース。 .Xr utmp 5 参照。 .El .Pp .It Pa rwho/ rwho データファイル。 .Xr rwhod 8 , .Xr rwho 1 , .Xr ruptime 1 参照。 .It Pa spool/ さまざまなプリンタ、メールシステムのスプールディレクトリ。 .Pp .Bl -tag -width Fl -compact +.It Pa clientmqueue/ +配送されていない送信依頼メールのキュー。 +.Xr sendmail 8 +参照。 .It Pa ftp/ -一般に ~ftp となる部分。anonymous ftp のルートディレクトリ。 +一般に ~ftp となる部分。 +anonymous ftp のルートディレクトリ。 .It Pa mqueue/ 配送されていないメールのキュー。 .Xr sendmail 8 参照。 .It Pa output/ ラインプリンタ用スプールディレクトリ。 .El .Pp .It Pa tmp/ システムリブートをまたがって保持される、一時ファイル。 .Bl -tag -width Fl -compact .It Pa vi.recover/ vi のリカバリファイルを格納しておくディレクトリ。 .El -.It Pa yp +.It Pa yp/ NIS マップ。 .El .El .Sh 注 このマニュアルページはデフォルトの .Fx ファイルシステムレイアウトを 記述しており、 各システムの実際の階層構造はシステム管理者の裁量に委ねられています。 よく維持管理されたインストールにおいては、 カスタマイズされた本ドキュメントが付属するでしょう。 .Sh 関連項目 .Xr apropos 1 , .Xr find 1 , .Xr finger 1 , .Xr grep 1 , .Xr ls 1 , .Xr whatis 1 , .Xr whereis 1 , .Xr which 1 , +.Xr fd 4 , +.Xr devfs 5 , .Xr fsck 8 .Sh 歴史 .Nm マニュアルページは .At v7 で登場しました。 .\"ZZZ: 3.0-RELEASE compliant by N. Kumagai 98-12-26 diff --git a/ja_JP.eucJP/man/man7/mailaddr.7 b/ja_JP.eucJP/man/man7/mailaddr.7 index f51254233a..5038cc7bd6 100644 --- a/ja_JP.eucJP/man/man7/mailaddr.7 +++ b/ja_JP.eucJP/man/man7/mailaddr.7 @@ -1,175 +1,176 @@ .\" Copyright (c) 1983, 1987, 1990, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)mailaddr.7 8.1 (Berkeley) 6/16/93 .\" %FreeBSD: src/share/man/man7/mailaddr.7,v 1.8 2004/07/03 18:29:23 ru Exp % .\" .\" $FreeBSD$ .\" .Dd June 16, 1993 .Dt MAILADDR 7 .Os .Sh 名称 .Nm mailaddr .Nd メールアドレスの解説 .Sh 解説 メールアドレスは、このマニュアルページの最後に列挙する、インターネットの プロトコルに基づいています。これらのアドレスは汎用的な書式 .Pp .Dl user@domain .Pp に従います。 ここで domain はドットで区切られた階層的なサブドメインのリストです。 例えば、ある正しいアドレスは以下の通りです。 .Pp .Dl eric@CS.Berkeley.EDU .Pp アドレス表記のある種の別形式と異なり、これらドメインには経路指定と しての意味は全くありません。 それゆえ、このアドレスがインターネットのアドレスとして指定された場合でも、 もし他の経路の方が簡便だったり効率的だったりする場合は、メールは そちらを通ります。 例えば、Berkeley の内部では、このアドレスを指定したメッセージは Berkeley のインターネットゲートウェイを通らず、おそらくイーサネットを 通じて直接 CS へ行くでしょう。 .Ss 省略 ある種の状況下においては完全なドメイン名を指定する必要はありません。 一般的に、宛先のアドレスの最初のドットより後の部分が、あなたが メッセージを発信しようとしている場所と同じドメインである場合は、 ドット以降のすべてを省略して構いません。 例えば、``calder.berkeley.edu'' に所属するユーザは、送り側と受け側の ホストが同じであるため、``berkeley.edu'' をつけずに ``eric@CS'' に メッセージを送ることができます。 .Ss 互換性 .Pp ある種の古いアドレスの書式は以前のメールシステムに互換になるように 新しい書式に変換されます。特に、 .Pp .Dl user@host .Pp と .Dl user@host.domain .Pp はそのまま新しい書式でも許されますが、 .Pp .Dl host.domain!user .Pp は .Pp .Dl user@host.domain .Pp に変換され、 .Pp .Dl host!user .Pp は .Pp .Dl user@host.UUCP -.Pp +.\" 次の .sp は翻訳で追加、.Pp でもよいが制御文の比較のために .sp とした。 +.sp に変換されます。 .Pp これは通常、古くからの UUCP ホストとの互換性を保つために、 送信される前に ``host!user'' 形式に逆変換されます。 .Pp .Ss 大文字と小文字の区別 .Pp ドメイン名 (すなわち、``@'' 記号の後にあるすべて) は、UUCP ホスト名を 例外として、大文字と小文字をどのように混ぜても構いません。 多くのホストはユーザ名に大文字と小文字をどのように混ぜて使った指定も 受け付けますが、著名な例外としては MULTICS サイトがあります。 .Ss 経路つきアドレス .Pp ある種の状況下では、メッセージを最終的な送り先に行き着かせるために いくつかのホストを経由地として指定することを余儀なくされることが あるかもしれません。 通常この経路指定は自動的に行われますが、 メッセージの経路を手動で指定した方が望ましい場合も時々あります。 それらのリレーを示すアドレスは「経路つきアドレス(route-addr)」と呼ばれます。 これらは以下の構文に従います。 .Pp .Dl <@hosta,@hostb:user@hostc> .Pp この例は、メッセージがまず hosta に送られ、そこから hostb へ、そして 最後に hostc に送られることを示します。 この経路は、hostc へのより効率的な経路が存在した場合でも、強制されます。 .Pp 経路つきアドレスはリターンアドレスにしばしば表れます。 これは、通例、各ホストにおいてソフトウェアが先頭に 経路情報を付け加えるためです。 実際の送り主を識別するために、アドレスの ``user@hostc'' 部分を除いた すべての部分を無視することができるのが通例です。 .Pp [注意: route-addr 構文は、使用しないように RFC 1123 で公式に要請されているので 使用するべきではありません。] .Pp ごく単純な経路指定のために、多くのサイトは「パーセントハック」も サポートしています。 .Pp .Dl user%hostc%hostb@hosta .Pp は、前の例に示したのと同じ経路を通って配送されます。 .Ss ポストマスタ .Pp すべてのサイトは、メールシステムに関する問題報告の送り先である ``postmaster'' という名前のユーザか、ユーザへのエイリアスを 備える必要があります。 .Ss その他のネットワーク .Pp 他のネットワークのうちの一部には、そのネットワークの名前を ドメインの最後の構成要素として与えることによって、 メッセージを届けることのできるものもあります。 これは .Em 標準の機能ではない ので、すべてのサイトでサポートされているわけではないでしょう。 例えば、CSNET や BITNET のサイトへはそれぞれ ``user@host.CSNET'' や ``user@host.BITNET'' として送信できることがしばしばです。 .Sh 関連項目 .Xr mail 1 , .Xr sendmail 8 .Rs .%A Crocker, D. H. .%T Standard for the Format of Arpa Internet Text Messages .%O RFC822 .Re .Sh 歴史 .Nm mailaddr マニュアルページは .Bx 4.2 から登場しました。 .Sh バグ RFC822 のグループ構文 (``group:user1,user2,user3;'') は、 古い berknet スタイルのアドレスと衝突するため、 ``group:;'' という特別な場合を除いてサポートされていません。 .Pp 経路つきアドレス構文は不愉快です。 .Pp UUCP 式と Internet 式のアドレスは礼儀正しく共存できません。 .\"ZZZ: 3.0-RELEASE compliant by N. Kumagai 99-1-21 diff --git a/ja_JP.eucJP/man/man7/ports.7 b/ja_JP.eucJP/man/man7/ports.7 index 7070ccd84f..f213c7c502 100644 --- a/ja_JP.eucJP/man/man7/ports.7 +++ b/ja_JP.eucJP/man/man7/ports.7 @@ -1,487 +1,530 @@ .\" .\" Copyright (c) 1997 David E. O'Brien .\" .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. .\" IN NO EVENT SHALL THE DEVELOPERS BE LIABLE FOR ANY DIRECT, INDIRECT, .\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT .\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, .\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY .\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .\" -.\" %FreeBSD: src/share/man/man7/ports.7,v 1.45 2004/06/16 07:29:21 krion Exp % +.\" %FreeBSD: src/share/man/man7/ports.7,v 1.45.2.3 2005/02/10 07:02:33 krion Exp % .\" .\" $FreeBSD$ -.Dd June 16, 2004 +.Dd February 8, 2005 .Dt PORTS 7 .Os .Sh 名称 .Nm ports .Nd 寄贈されたアプリケーション .Sh 解説 .Fx ports コレクション によって、ユーザや管理者は簡単にアプリケーションをインストールする ことができます。 .Em port はそれぞれ、オリジナルのソースコードを .Bx 上でコンパイルして実行 -させるために必要なパッチのすべてを含んでいます。アプリケーションの -コンパイルは、 +させるために必要なパッチのすべてを含んでいます。 +アプリケーションのコンパイルは、 port のディレクトリで .Nm make Cm build と入力するだけで簡単にできます。 port の .Pa Makefile は、ローカルディスクからもしくは FTP を使って、自動的にアプリケーションの -ソースコードを取得 -.Pq fetch +ソースコードを取得 (fetch) して、自分のシステムでそれを展開して、 -パッチを当て、コンパイルします。すべてが順調に進んだ場合、 +パッチを当て、コンパイルします。 +すべてが順調に進んだ場合、 .Nm make Cm install を実行することにより、アプリケーションがインストールされます。 .Pp インストールされたシステムよりも新しい ports を、 .Fx リポジトリからダウンロードして使用できます。 ただし、最初に適切な .Dq "アップグレードキット" を .Pa http://www.FreeBSD.org/ports/ から取得してインストールすることが重要です! 新しい ports をダウンロードするときには、 .Xr portcheckout 1 スクリプト (もちろんこれも port です!) が役立つでしょう。 .Pp port の利用に関してさらに情報が必要ならば、 .%B "The FreeBSD Handbook" の .Dq "Packages and Ports" (原文 .Pa file:/usr/share/doc/en_US.ISO8859-1/books/handbook/ports.html または、 .Pa http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/ports.html 、和文 .Pa file:/usr/share/doc/ja_JP.eucJP/books/handbook/ports.html または、 .Pa http://www.FreeBSD.org/doc/ja_JP.eucJP/books/handbook/ports.html ) に目を通して下さい。 port を新規に作成するための情報については、 .%B "The Porter's Handbook" .Pa ( file:/usr/share/doc/en_US.ISO8859-1/books/porters-handbook/index.html または、 .Pa http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/porters-handbook/ ) に目を通して下さい。 .Sh ターゲット ターゲットのいくつかは、サブディレクトリを再帰的に make して行きます。 これにより、例えば、 .Dq Li biology -の port すべてをインストールすることが -できます。再帰的に make を行なうターゲットは、 +の port すべてをインストールすることができます。 +再帰的に make を行なうターゲットは、 .Cm build , checksum , clean , configure , .Cm depends , extract , fetch , install , .Cm package です。 .Pp 次のターゲットは、それぞれすぐ手前のターゲットによって順に自動的に -実行されます。すなわち、 +実行されます。 +すなわち、 .Cm build は、 (必要があれば、) .Cm install -によって実行されます。以下のターゲットそれぞれについて、同様のルールが +によって実行されます。 +以下のターゲットそれぞれについて、同様のルールが .Cm fetch まで順次適用されます。 通常は、ターゲットとして、 .Cm install を指定するだけでよいはずです。 .Bl -tag -width ".Cm configure" .It Cm config .Xr dialog 1 を使用して、この port の .Va OPTIONS を設定します。 -.It Ar fetch +.It Cm fetch .Va MASTER_SITES と .Va PATCH_SITES でリストされたサイトから、 この port を構築するために必要なファイルすべてを取得 -.Pq fetch -します。 -.Va FETCH_CMD -と -.Va MASTER_SITE_OVERRIDE -とを参照して下さい。 +(fetch) します。 +.Va FETCH_CMD , MASTER_SITE_OVERRIDE , +.Va MASTER_SITE_BACKUP +を参照して下さい。 .It Cm checksum 取得した distfile のチェックサムが port で動作確認されたものと 一致するかどうかを検証します。 .Va NO_CHECKSUM を定義することで、このステップを飛ばすことができます。 .It Cm depends 現在の port と依存関係にある port をインストール -(もしくは、必要がある場合のみコンパイル) -します。ターゲット +(もしくは、必要がある場合のみコンパイル) します。 +ターゲット .Cm extract もしくは .Cm fetch により呼び出された場合、 -.Cm fetch-depends , -.Cm build-depends +.Cm fetch-depends , build-depends などとしてひとつずつ実行されます。 .Va NO_DEPENDS を定義することで、このステップを飛ばすことができます。 .It Cm extract distfile を作業用ディレクトリに展開します。 .It Cm patch port に必要なパッチすべてを適用します。 .It Cm configure -port を構成 (configure) します。port によっては、この段階で質問して +port を構成 (configure) します。 +port によっては、この段階で質問して くるものもあります。 .Va INTERACTIVE と .Va BATCH を参照して下さい。 .It Cm build -port を構築します。これはターゲット +port を構築します。 +これはターゲット .Cm all を呼び出すことと同じです。 .It Cm install port をインストールし、この port をインストールしたことを package (訳注: .Fx の package system におけるパッケージを指す場合にこう表記します) -システムに登録します。このターゲットは、実際に必要なこと +システムに登録します。 +このターゲットは、実際に必要なこと すべてを行なってくれます。 .El .Pp 次のターゲットは、通常のインストールプロセスでは実行されません。 .Bl -tag -width ".Cm fetch-recursive" .It Cm showconfig この port の .Va OPTIONS 設定を表示します。 +.It Cm showconfig-recursive +この port と依存するものの +.Va OPTIONS +設定を表示します。 .It Cm rmconfig この port の .Va OPTIONS 設定を削除します。 +.It Cm rmconfig-recursive +この port と依存するものの +.Va OPTIONS +設定を削除します。 +.It Cm config-conditional +すでに +.Va OPTIONS +設定を持っている port をスキップします。 .It Cm fetch-list この port を構築するために取得されるファイルのリストを表示します。 .It Cm fetch-recursive この port と依存するものの distfile を取得します。 .It Cm fetch-recursive-list .Cm fetch-recursive で取得されるファイルのリストを表示します。 .It Cm pretty-print-run-depends-list , pretty-print-build-depends-list コンパイル依存 port リストと実行依存 port リストを表示します。 また、これらの依存 port リストが依存する port についても表示します。 .It Cm clean 展開されたソースコードを削除します。 .Va NOCLEANDEPENDS を定義しておかない限り、削除は依存関係にある port に再帰的に適用されます。 .It Cm distclean その port の distfile を削除し、 .Cm clean ターゲットを実行します。 .Va NOCLEANDEPENDS を定義しておかない限り、 .Cm clean -の部分は依存関係にある port に再帰的に適用されます。しかし、 +の部分は依存関係にある port に再帰的に適用されます。 +しかし、 .Cm distclean の部分は決して再帰的に適用されません (この挙動はひょっとするとバグかもしれません)。 .It Cm reinstall .Cm deinstall を使用すべきところでうっかり .Xr pkg_delete 1 を使ってしまった場合、このターゲットを使って port を復活させて下さい。 .It Cm deinstall .Xr pkg_delete 1 と同様に、インストールした port をシステムから削除します。 .It Cm deinstall-all 同じ .Va PKGORIGIN のインストール済 ports すべてを、システムから削除します。 .It Cm package -この port のバイナリ package を作成します。まだインストールされて +この port のバイナリ package を作成します。 +まだインストールされて いなかった場合、その port をインストールします。 package は .Pa .tbz ファイルであり、その port を他のマシンに .Xr pkg_add 1 を使ってインストールする際に使用することができます。 .Va PACKAGES で指定されたディレクトリが存在しなければ、package はカレントディレクトリに 置かれます。 .Va PKGREPOSITORY と .Va PKGFILE とを参照して下さい。 .It Cm package-recursive .Cm package と似ていますが、依存する各 port に対しても package を作成します。 .It Cm readmes その port の .Pa README.html ファイルを生成します。 これは、あなたのシステム上の全 port をウェブでブラウズできるようにするために、 .Pa /usr/ports から使用可能です。 .It Cm search .Pa INDEX ファイルを、 -.Cm key +.Va key (port の名前、コメント、依存関係を調べます)、 -.Cm name +.Va name (port の名前のみを調べます)、 .Va path (port のパスを調べます)、 .Va info (port の情報を調べます)、 .Va maint (port のメンテナを調べます)、 .Va cat (port のカテゴリを調べます)、 .Va bdeps (port の構築依存関係を調べます)、 .Va rdeps (port の実行依存関係を調べます) などの .Xr make 1 変数や、その逆の意味をもつ .Va xname , xkey などで指定されたパターンで検索します。 例えば、次のように入力します: .Pp .Dl "cd /usr/ports && make search name=query" .Pp すると、全 ports のうち名前が .Dq Li query に適合するものが探されます。 結果には、適合する ports のパス、コメント、メンテナ、構築依存、実行依存が 含まれます。 .Bd -literal -offset indent cd /usr/ports && make search name=pear- \e xbdeps=apache .Ed .Pp 名前に .Dq Li pear- を含み、apache が構築依存関係に含まれていないすべての ports を検索します。 .Bd -literal -offset indent cd /usr/ports && make search name=pear- \e xname='ht(tp|ml)' .Ed .Pp 名前に .Dq Li pear- を含みますが、 .Dq Li html や .Dq Li http は含まないすべての ports を検索します。 .Bd -literal -offset indent make search key=apache display=name,path,info keylim=1 .Ed .Pp .Dq Li apache が名前、パス、情報フィールドのどれかに含まれるすべての ports を検索します。 他のレコードは無視します。 .It Cm describe .Pa INDEX ファイル中で使用される、各 port の 1 行説明を生成します。 .It Cm index .Pa /usr/ports/INDEX を作成します。 これは、 .Cm pretty-print-* および .Cm search のターゲットで使用されます。 .Cm index ターゲットを実行することで、 .Pa INDEX ファイルが ports ツリーに対して最新であることを保証します。 .It Cm fetchindex .Fx クラスタから .Pa INDEX ファイルを取得します。 .El .Sh 環境変数 これら環境変数のすべてを変更することができます。 .Bl -tag -width ".Va MASTER_SITES" .It Va PORTSDIR -port ツリーの場所を指定します。これは +port ツリーの場所を指定します。 +これは .Fx と .Ox では .Pa /usr/ports で、 .Nx では .Pa /usr/pkgsrc です。 .It Va WRKDIRPREFIX 一時ファイルを作成する場所です。 .Va PORTSDIR が読み込み専用の場合 (おそらく CD-ROM をマウントした場合) 有用です。 .It Va DISTDIR -distfile を探す場所であり、取得した distfile を置く場所です。通常は +distfile を探す場所であり、取得した distfile を置く場所です。 +通常は .Va PORTSDIR の下の .Pa distfiles/ です。 .It Va PACKAGES ターゲット .Cm package でのみ使用されます。 -package ツリーのベースディレクトリです。通常は、 +package ツリーのベースディレクトリです。 +通常は、 .Va PORTSDIR の下の .Pa packages/ です。 このディレクトリが存在する場合、package ツリーが (部分的に) 構築されます。 -このディレクトリは存在する必要はありません。存在しない場合、package は -カレントディレクトリに置かれます。もしくは、以下のいずれか一方を定義 +このディレクトリは存在する必要はありません。 +存在しない場合、package は +カレントディレクトリに置かれます。 +もしくは、以下のいずれか一方を定義 することができます。 .Bl -tag -width ".Va PKGREPOSITORY" .It Va PKGREPOSITORY package を置くディレクトリ。 .It Va PKGFILE その package のフルパス。 .El .It Va PREFIX 一般に、成果物をどこにインストールするかを指定します (通常は .Pa /usr/local か、 .Pa /usr/X11R6 です)。 .It Va MASTER_SITES ローカルマシンに配布ファイルが存在しない場合、最初に取得しに行くサイトです。 .It Va PATCH_SITES ローカルマシンにパッチファイルが存在しない場合、最初に取得しに行くサイトです。 .It Va MASTER_SITE_FREEBSD これが設定されている場合、すべてのファイルを .Fx のマスタサイトに 取りに行きます。 .It Va MASTER_SITE_OVERRIDE すべてのファイルとパッチについて、まずこれらのサイトに行って取得を試みます。 +.It Va MASTER_SITE_BACKUP +すべてのファイルとパッチについて、最後にこれらのサイトに行って取得を試みます。 +.It Va MASTER_SITE_INDEX +.Fx +クラスタで構築された +.Pa INDEX +の取得先 +.Pf ( Cm fetchindex +ターゲット用) です。 +デフォルトは +.Pa http://www.FreeBSD.org/ports/ +です。 +.It Va FETCHINDEX +.Pa INDEX +を取得するコマンド +.Pf ( Cm fetchindex +ターゲット用) です。 +デフォルトは +.Dq Nm fetch Fl am +です。 .It Va NOCLEANDEPENDS これが定義されている場合、依存関係にある port に対して .Cm clean を再帰的に適用しません。 .It Va FETCH_CMD -ファイルを取得する際に使用するコマンドです。通常は +ファイルを取得する際に使用するコマンドです。 +通常は .Xr fetch 1 です。 .It Va FORCE_PKG_REGISTER これが設定されている場合、既にシステムに存在する package 登録情報を 上書きします。 .It Va MOTIFLIB .Pa libXm. Ns Brq Pa a , Ns Pa so の位置を指定します。 .It Va INTERACTIVE これが設定されている場合、ユーザ入力が必要な port にのみ動作します。 .It Va BATCH これが設定されている場合、100% 自動的にインストールできる port にのみ 動作します。 .It Va OPTIONS 定義されている場合、この port が受け付ける .Va WITH_* オプションのリストです。 .Em 注意 : .Va OPTIONS が実際にちゃんと動作するには、 .Va WITH_* 変数をテストし始める前に .Pa bsd.port.pre.mk をインクルードする必要があります。 +.It Va DISABLE_VULNERABILITIES +定義されている場合、新規 port のインストール時に +.Xr portaudit 1 +を使ったセキュリティ脆弱性のチェックを行ないません。 .El .Sh 関連ファイル .Bl -tag -width ".Pa /usr/ports/Mk/bsd.port.mk" -compact .It Pa /usr/ports デフォルトの port ディレクトリ .No ( Fx と .Ox ) 。 .It Pa /usr/pkgsrc デフォルトの port ディレクトリ -.Po -.Nx -.Pc 。 +.Pq Nx +。 .It Pa /usr/ports/Mk/bsd.port.mk -.\"kuma: big Kahuna というのはモアイのような巨大石のものらしい。 -.\"kuma: だれか教えて?! ご本尊様であらしゃいます。 +.\" kahuna = 【名】ハワイ先住民の祈祷師 +.\" big kahuna = お偉方、ボス、大物、偉いさん .El .Sh 関連項目 .Xr make 1 , .Xr pkg_add 1 , .Xr pkg_create 1 , .Xr pkg_delete 1 , .Xr pkg_info 1 , .Xr pkg_version 1 .Pp 次に示すものは ports コレクションの一部です: .Pp .Xr pib 1 , .Xr portcheckout 1 , .Xr portlint 1 .Rs .%B "The FreeBSD Handbook" .Re .Pp .Pa http://www.FreeBSD.org/ports (port すべてが検索可能なインデックス) .Sh 作者 .An -nosplit このマニュアルページは、もともとは .An David O'Brien によるものです。 .Sh 歴史 ports コレクション は、 .Fx 1.0 で登場しました。 その後、 .Nx と .Ox にも広まりました。 .Sh バグ port に関する文書が 4 か所に分散されてしまっています。 .Pa /usr/ports/Mk/bsd.port.mk と .%B "The Porter's Handbook" と .%B "The FreeBSD Handbook" の .Dq "Packages and Ports" セクションと、 このマニュアルページ の 4 つです。 -.Pp -このマニュアルページは長過ぎです。 .\"ZZZ: 3.0-RELEASE compliant by N. Kumagai, 98-12-26 diff --git a/ja_JP.eucJP/man/man7/re_format.7 b/ja_JP.eucJP/man/man7/re_format.7 index 45c6267b22..f841befea9 100644 --- a/ja_JP.eucJP/man/man7/re_format.7 +++ b/ja_JP.eucJP/man/man7/re_format.7 @@ -1,493 +1,494 @@ .\" Copyright (c) 1992, 1993, 1994 Henry Spencer. .\" Copyright (c) 1992, 1993, 1994 .\" The Regents of the University of California. All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" Henry Spencer. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)re_format.7 8.3 (Berkeley) 3/20/94 .\" %FreeBSD: src/lib/libc/regex/re_format.7,v 1.11 2004/07/02 23:52:12 ru Exp % .\" .\" $FreeBSD$ .\" .\" WORD: branch 枝 .\" WORD: bracket expression 角括弧式 .\" WORD: substring サブストリング .\" WORD: subexpression サブ式 .\" WORD: collating element 連続要素 .\" WORD: case ケース (大文字/小文字) .\" WORD: bound 領域 .\" .Dd March 20, 1994 .Dt RE_FORMAT 7 .Os .Sh 名称 .Nm re_format .Nd POSIX 1003.2 正規表現 .Sh 解説 .St -p1003.2 において定義されているように、 正規表現 .Pq Dq RE には 2 つの形式があります。 ひとつは現代正規表現 (大雑把にいうと .Xr egrep 1 で使用されているもので、1003.2 での .Dq 拡張 正規表現) で、もうひとつは旧式正規表現 (これも大雑把には .Xr ed 1 で使用されているもので、1003.2 での .Dq 基本 正規表現) です。 旧式正規表現は大抵の場合いくつかの古くからあるプログラムでの 旧バージョンとの互換性のために存在しています。 これについては最後に説明します。 .St -p1003.2 は正規表現の構文と意味のいくつかの部分を明確に定めないままに しています。 他の .St -p1003.2 の実装とは完全な互換性がないかもしれない これらの部分については、`\(dd' によって印をつけて示します。 .Pp 正規表現 (現代正規表現) はひとつ\(ddもしくはそれ以上の空でない\(dd .Em 枝 (branch) を .Ql \&| によって区切ったものです。 いずれかの枝にマッチすると正規表現はマッチします。 .Pp 枝はひとつ\(dd以上の .Em ピース (piece) が結合されたものです。 枝は最初のピース、次のピース...とすべてがマッチしたものにマッチします。 .Pp ピースは .Em アトム (atom) 、もしくはそれに単一の \(dd .Ql \&* , .Ql \&+ , -.Ql ?\& +.Ql \&? か .Em 領域 (bound) のいずれかが続いたものです。 アトムに .Ql \&* が続いたものは、 そのアトムの 0 個以上のシーケンスにマッチします。 アトムに .Ql \&+ が続いたものは、 そのアトム 1 個以上のシーケンスにマッチします。 アトムに .Ql ?\& が続いたものは、 そのアトムの 0 個か 1 個のシーケンスにマッチします。 .Pp .Em 領域 は .Ql \&{ で始まり、符号なしの 10 進数の整数が続き、 その次に .Ql \&, が続くことがあり、 またその次にもうひとつ符号なしの 10 進数の整数が続くことがあり、 最後には常に .Ql \&} が続きます。 ここでの整数は 0 から .Dv RE_DUP_MAX (255\(dd) の範囲 (これらの数値を含む) でなくてはならず、 数値が 2 つある場合は、 最初のものは 2 番目のもの以下でなければなりません。 ひとつの整数値 .Em i が含まれコンマが含まれない領域がアトムに続くと、 アトムがちょうど .Em i 個のシーケンスにマッチします。 ひとつの整数値 .Em i とコンマが含まれる領域がアトムに続くと、 .Em i 個以上のアトムのシーケンスにマッチします。 2 つの整数値 .Em i と .Em j が含まれる領域がアトムに続くと、 .Em i 個以上 .Em j 個以下のアトムからなるシーケンスにマッチします。 .Pp アトムは次のいずれかです: .Ql () に囲まれた正規表現 (その正規表現にマッチ)、 .Ql () の空のセット (ヌルストリングにマッチ)\(dd、 .Em 角括弧式 (下記参照)、 .Ql .\& (任意の 1 文字にマッチ)、 .Ql \&^ (行の先頭のヌルストリングにマッチ)、 .Ql \&$ (行の末尾のヌルストリングにマッチ)、 .Ql \e とそれに続く .Ql ^.[$()|*+?{\e の内のどれか 1 文字 (それらの通常の扱いでの文字にマッチ)、 .Ql \e とそれに続くその他の文字\(dd (それらの通常の扱いでの文字にマッチ、 .Ql \e がない場合と同様\(dd)、 もしくはその他に何も指定されていない文字 (その文字にマッチ)。 .Ql \&{ に数字以外の文字が続くものは通常の文字であり、 領域の開始とはなりません\(dd。 .Ql \e で終了する正規表現は規則違反となります。 .Pp .Em 角括弧式 (bracket expression) とは .Ql [] で囲まれた文字のリストです。 通常はリスト中のどれか 1 文字にマッチします (下記を除く)。 リストの最初が .Ql \&^ で始まる場合、 リストの残りの文字 .Em でない 1 文字にマッチします (下記を除く)。 リスト中の 2 文字が .Ql \&- で分割されている場合は、 これら 2 文字の .Em 範囲 (その 2 文字を含む) にある文字の省略形となり、 例えば ASCII では .Ql [0-9] は 10 進数数字にマッチします。 .Ql a-c-e のように 2 つの文字範囲がひとつの文字を共有することはできません\(dd。 文字範囲は文字コードの配列に非常に依存しており、 移植性の良いプログラムを書くにはこれに頼ることを避けるのが賢明でしょう。 .Pp リスト中に文字 .Ql \&] を含めるには、これを最初の文字にする (もしくは .Ql \&^ に続ける) ようにします。 文字 .Ql \&- を含めるには、これを最初もしくは最後の文字にするか、 文字範囲の終了文字とします。 文字 .Ql \&- を文字範囲の開始文字とするには、 これを連続要素とするために .Ql [.\& と -.Ql .]\& +.Ql .] で括ります (下記参照)。 これらと .Ql \&[ を使用したいくつかの組合せの例外を除いて、 .Ql \e を含むすべての他の特殊文字は角括弧式の中では それらの特殊な作用は無効となります。 .Pp 角括弧式の中では、連続要素 (文字、1 文字のように扱われる複数文字からなるシーケンス、 またはそれら連続シーケンスの名称) は、 .Ql [.\& と .Ql .]\& で括られ、 その連続要素の文字のシーケンスの意味となります。 このシーケンスは角括弧式のリストのひとつの要素となります。 複数文字からなる連続要素を含む角括弧式はこのように 1 文字以上のものに マッチすることができます。 例えば、連続シーケンスが連続要素として .Ql ch を含む場合、 正規表現 .Ql [[.ch.]]*c は .Ql chchcc の最初の 5 文字にマッチします。 .Pp 角括弧式の中では、 .Ql [= と .Ql =] で囲まれた連続要素は ひとつの等価クラスであり、 それ自身を含むすべての連続要素の文字のシーケンスを示しています。 (もしその他に等価な連続要素がない場合は、 それはそれを囲うものが .Ql [.\& と .Ql .]\& であるもののように扱われます。) 例えば、 .Ql x と .Ql y が等価クラスのメンバである時、 .Ql [[=x=]] と .Ql [[=y=]] と .Ql [xy] はすべて同じ意味を持ちます。 等価クラスは文字範囲の終了点とすることはできません\(dd。 .Pp 角括弧式の中では、 .Ql [: と .Ql :] で囲まれた .Em 文字クラス の名称は そのクラスに属するすべての文字のリストを表わします。 標準の文字クラスの名称には次のものがあります。 .Pp .Bl -column "alnum" "digit" "xdigit" -offset indent .It Em "alnum digit punct" .It Em "alpha graph space" .It Em "blank lower upper" .It Em "cntrl print xdigit" .El .Pp これらは .Xr ctype 3 において定義されている文字クラスを表わしています。 ロケールによってはこれら以外のものがあることがあります。 文字クラスは文字範囲の終了点として使うことは出来ません。 .Pp 角括弧式には 2 つの特殊なケース\(ddがあります。 角括弧式 .Ql [[:<:]] と .Ql [[:>:]] はそれぞれ単語の開始および終了点に おけるヌルストリングにマッチします。 単語は単語文字が前にも後にも付加されない 単語文字のシーケンスとして定義されます。 単語文字は .Em alnum (アルファベットと数字) 文字 ( .Xr ctype 3 で定義されているように) か下線文字です。 これは拡張して定義されているもので、 .St -p1003.2 に互換性はありますが、指定はされていません。 この拡張はソフトウェアにおいては、 他のシステムへの移植性をよく考えて使うべきです。 .Pp 与えられた文字列の複数のサブストリング (文字列の一部) に、ある正規表現がマッチ可能な場合、 その正規表現は文字列の中で最初に現れたものにマッチします。 もし正規表現が同じ位置に現れた複数のサブストリングにマッチする場合は、 最も長いものにマッチします。 サブ式 (subexpression - 式の一部) も最も長いサブストリングにマッチしますが、 マッチ全体が最も長くなるように、 また正規表現中で先に開始しているサブ式が遅く開始しているものより 高い優先度をもつような条件があります。 高いレベルのサブ式はこのため低いレベルの部品的なサブ式より 高い優先度を持ちます。 .Pp マッチの長さは連続要素ではなく、文字数で計られます。 ヌルストリングは全くマッチしないものよりは長いものであると考えられます。 例えば、 .Ql bb* は .Ql abbbc の 3 つの真中の文字にマッチし、 .Ql (wee|week)(knights|nights) は .Ql weeknights の 10 個すべての文字にマッチし、 .Ql (.*).*\& が .Ql abc にマッチする時には、括弧で囲まれたサブ式は 3 つすべての文字にマッチします。 そして .Ql (a*)* が .Ql bc にマッチする時には、 正規表現全体と括弧で囲まれたサブ式の両方がヌルストリングにマッチします。 .Pp ケース (大文字/小文字) 非依存マッチが指定された場合、 アルファベットからケースの区別がすべて消え去ったような効果があります。 ケースが複数あるアルファベットが角括弧式の外に通常の文字として現れた時、 それは事実上すべてのケースを含む角括弧式 (たとえば .Ql x は .Ql [xX] に) に変換されます。 角括弧式の中に現れたときは、 その文字の異なるケースがその角括弧式に追加されます。 すなわち .Ql [x] は .Ql [xX] となり、また .Ql [^x] は .Ql [^xX] となります。 .Pp 正規表現の長さは特に制限は設けられていません\(dd。 プログラムに移植性を持たせたい場合は 正規表現は 256 バイトにとどめるべきでしょう。 256 バイトを越える正規表現の受理を拒否するにもかかわらず、 POSIX 準拠であるとする実装がありうるからです。 .Pp 旧式 .Pq Dq 基本 正規表現はいくつかの点で異なっています。 .Ql \&| は通常の文字であり、 これらの機能の等価なものは存在しません。 .Ql \&+ や .Ql ?\& は通常の文字であり、それらの機能は 領域を用いて表されます (それぞれ .Ql {1,} または -.Ql {0,1})。 +.Ql {0,1} ) +。 また、現代正規表現の .Ql x+ は .Ql xx* と等価であることに注意して下さい。 領域の区切り文字は .Ql \e{ と .Ql \e} であり、 .Ql \&{ と .Ql \&} は通常の文字として扱われます。 ネストしたサブ式での括弧は .Ql \e( と .Ql \e) であり、 .Ql \&( と .Ql \&) は通常の文字となります。 .Ql \&^ は正規表現の先頭、もしくは\(dd 括弧で囲まれたサブ式の先頭を除いて通常の文字となり、 .Ql \&$ は正規表現の末尾、もしくは\(dd 括弧で囲まれたサブ式の末尾を除いて通常の文字となり、 .Ql \&* はもしこれが正規表現の先頭、もしくは括弧で囲まれたサブ式の先頭 (か、先頭の .Ql \&^ のあと) に現れると通常の文字となります。 最後にひとつ新しい型のアトム - .Em 後方参照 があります。 .Ql \e に 0 でない 10 進数 .Em d が続いたものは、 .Em d 番目の括弧で囲まれたサブ式によってマッチする文字の同じ シーケンスにマッチします (開き括弧の位置によって左から右へサブ式に番号を付けます)。 すなわち .Ql \e([bc]\e)\e1 は .Ql bb や .Ql cc にマッチしますが、 .Ql bc にはマッチしません。 .Sh 関連項目 .Xr regex 3 .Rs .%T Regular Expression Notation .%R IEEE Std .%N 1003.2 .%P section 2.8 .Re .Sh バグ 正規表現が 2 種類もあるのはへまなことです。 .Pp 現在の .St -p1003.2 仕様では .Ql \&) はマッチする .Ql \&( がない場合に 普通の文字として扱われることになっています。 これは言葉使い上の誤りの意図しない結果であり、 変更される可能性があります。 よって、この仕様に依存すべきではありません。 .Pp 後方参照はひどいへまであり、 効率的な実装をおこなう上で大きな問題を引き起こします。 さらに、それらの定義はどこかあいまいです。( .Ql a\e(\e(b\e)*\e2\e)*d は .Ql abbbd にマッチするでしょうか ?) これらを使うのは避けてください。 .Pp .St -p1003.2 のケース非依存マッチの仕様はあいまいです。 上記での .Dq ひとつのケースはすべてのケースを表わす という定義は 実装を行ったものの間では正しい解釈として現在同意されているものです。 .Pp 語の境界の構文は信じられないほど醜いものです。 .\"ZZZ: 3.0-RELEASE compliant by N. Kumagai 99-1-21 diff --git a/ja_JP.eucJP/man/man7/release.7 b/ja_JP.eucJP/man/man7/release.7 index 73a2ee31dc..dcaf7c4592 100644 --- a/ja_JP.eucJP/man/man7/release.7 +++ b/ja_JP.eucJP/man/man7/release.7 @@ -1,531 +1,533 @@ .\" Copyright (c) 2002 Murray Stokely .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" %FreeBSD: src/share/man/man7/release.7,v 1.47 2004/08/16 10:25:43 obrien Exp % +.\" %FreeBSD: src/share/man/man7/release.7,v 1.47.2.4 2005/03/23 16:18:10 jhb Exp % .\" $FreeBSD$ .\" .\" WORD: clean system まっさらのシステム[release.7] .\" -.Dd August 10, 2004 +.Dd September 6, 2004 .Dt RELEASE 7 .Os .Sh 名称 .Nm release .Nd "リリース構築基盤" .Sh 解説 .Fx は、ユーザが .Fx オペレーティングシステムのリリース全てを作成できるような完全な構築環境を 提供しています。 リリースを構築するために必要なツールの全ては、 CVS リポジトリ中の .Pa src/release に揃っています。 実のところ、 CD-ROM を焼く際に使える ISO イメージ、インストール用フロッピ、 FTP インストール用ディレクトリの生成をはじめとして、完全なリリースを コマンド一発で構築できます。 このコマンドは、 .Dq Li "make release" と、うまい名前が付けられています。 .Pp リリースを構築する前に、 .Xr build 7 の内容によく馴染んでおいてください。 また、ソースからのシステムアップグレードの経験も必須です。 リリース構築プロセスでは、 現在動作しているカーネルに対応したソースから、そのシステム上で .Dq Li "make buildworld" によってコンパイルされた結果を、 .Pa /usr/obj に置いておくことが必要です。 完全なシステムのためのオブジェクトファイルを、まっさらの .Xr chroot 8 環境にインストールできるようにするために、これが必要となります。 リリースを進めるには、 .Xr md 4 (メモリディスク) デバイスドライバがカーネルに存在する (コンパイル済み、またはモジュールとして利用可能のいずれも可) ことも必要です。 .Pp この文書は、ソースコード管理、品質管理など、 リリースエンジニアリングプロセスに関するその他の側面は扱いません。 .Sh ターゲット リリース用 makefile .Pq Pa src/release/Makefile は、かなり難解です。 ほとんどの場合、 .Cm release ターゲットのことを考えるだけで済むと思います。 .\" XXX: Some sort of introduction to this list? All the others have one. -.Bl -tag -width ".Cm rerelease" +.Bl -tag -width ".Cm package-split" .It Cm release .Dq Li "make installworld" を用いて、ファイルシステムの .Xr chroot 8 環境にまっさらのシステムをインストールします。 指定したバージョンのソースコードをチェックアウトし、 .Dq Li "make buildworld" を用いて、まっさらの環境に完全なシステムを再構築します。 そのあとに、ディストリビューション別のパッケージング(まとめ上げ)、 インストール用フロッピディスクの構築、リリース文書の構築などの 細かいステップが続きます。 .Pp このターゲットは、 .Va kern.securelevel sysctl を \-1 (デフォルト) とした root で構築する必要があります。 .It Cm rerelease このターゲットは、リリース構築作業の結果を手で修正し、前の .Dq Li "make release" の中間結果を使い、最小のステップ数でリリースを再構築することを 想定したものです。 .It Cm floppies 新規のブートおよび fixit フロッピの組を作成します。 .Cm release.4 , .Cm release.8 , .Cm floppies.1 , .Cm floppies.2 , .Cm floppies.3 ターゲットを呼び、直前の .Dq Li "make release" のフロッピイメージを再作成します。 このターゲットは、カスタムブートフロッピの作成にもっとも良く使用されます。 +.It Cm package-split +ディスク 1 およびディスク 2 のイメージの、パッケージ関連部分を作成します。 +ports チームが提供するパッケージビルドからパッケージを取り出して適切に編成するため、 +.Pa src/release/package-split.py +スクリプトから作られる必要なパッケージのリストを使用します。 +この結果得られるディレクトリは、 +.Cm iso.1 +ターゲットで適切なパッケージ関連素材とともに ISO イメージを構築するように、 +.Va CD_PACKAGE_TREE +変数を介して +.Dq Li "make release" +に渡すことができます。 .El .Pp .Dq Li "make release" により呼び出されるターゲットは次のとおりです。 .Bl -tag -width ".Cm fetch-distfiles" .It Cm release.1 ディレクトリ .Pa ${CHROOTDIR}/R をまっさらにし、 .Xr mtree 8 を用いてシステム用のディレクトリ階層を構築します。 .It Cm release.2 システムをディストリビューション用ディレクトリにインストールします。 .It Cm release.3 .Pa GENERIC カーネルを作り、インストールします。 同時に .Va KERNELS にリストされた他のカーネルも、作成しインストールします。 .It Cm release.4 .Xr crunchgen 1 を用いて、インストール用フロッピに収容する .Dq crunched バイナリを構築します。 .It Cm release.5 合成ディストリビューションを構築し、 また、作成されたディストリビューションツリーを掃除しきれいにします。 .It Cm release.6 組み立てられたディストリビューションツリーの tarball を 生成します。 .It Cm release.7 ソースディストリビューションを作成します。 .It Cm release.8 MFS root ファイルシステムを生成します。 .It Cm floppies.1 boot と kernel フロッピを生成します。 .It Cm floppies.2 fixit フロッピを生成します。 .It Cm floppies.3 -.Pa ${CHROORDIR}/R/ftp/stage/floppies +.Pa ${CHROOTDIR}/R/ftp/stage/floppies ステージディレクトリでの作業の仕上げをします。 .It Cm ftp.1 FTP インストールに適切な領域を .Pa ${CHROOTDIR}/R/ftp に整えます。 .It Cm cdrom.1 -CD-ROM イメージ構築に適切な領域を +live ファイルシステム CD-ROM イメージ用の配置を、 .Pa ${CHROOTDIR}/R/cdrom -に整えます。 +以下に作成します。 +.It Cm cdrom.2 +1 枚目および 2 枚目の CD-ROM イメージ用の配置を作成します。 +.It Cm cdrom.3 +ブート専用 CD-ROM イメージおよびブート専用 UFS miniroot +イメージ用の配置を作成します。 .It Cm iso.1 -CD-ROM リリース領域から ISO イメージを 2 つ構築します (インストール用と +CD-ROM リリース領域から ISO イメージを構築します (インストール用と .Dq live ファイルシステムの 2 つ)。 デフォルトでは無効になっています。 以下の .Va MAKE_ISOS を参照してください。 .It Cm fetch-distfiles リリースビルドに必要な distfile で .Va RELEASEDISTFILES にはまだ無いものを取得します。 .It Cm doc.1 .Fx ドキュメンテーションプロジェクトのソースドキュメント (SGML, XML) を リリースに含める HTML / テキストドキュメントに変換するために 必要なツール全てを構築します。 また、現在存在するユーザドキュメントも構築、インストールします。 これには、Handbook, FAQ, article などが含まれます。 .It Cm doc.2 リリースドキュメントを構築します。 これには、リリースノート、ハードウェアガイド、インストール作業説明書 (installation instructions) が含まれます。 .El .Sh 環境変数 指定しなければならない環境変数は以下のとおりです。 .Bl -tag -width ".Va BUILDNAME" .It Va BUILDNAME 構築するリリースの名前。 この名前は、 .Pa sys/conf/newvers.sh の中で .Va RELEASE の値を設定するのに使用します。 この値は .Xr uname 1 の出力を変更します。 .It Va CHROOTDIR .Xr chroot 8 環境として、全リリース構築に使用するディレクトリ。 .\" XXX: I recommend against hardcoding specific numbers like "2.3" here; .\" XXX: perhaps it should be replaced with something to the effect of -.\" XXX: "we don't know how much space you'll need, but make sure you have +.\" XXX: "we do not know how much space you'll need, but make sure you have .\" XXX: at least 3 GB to be safe" (I know i'm still hardcoding a number, .\" XXX: but at least it looks less like a decree and more like an estimate. i386 アーキテクチャの場合、これが存在するファイルシステムには 少なくとも 3.2GB の空き領域が必要です。 .It Va CVSROOT .Fx CVS リポジトリの位置です。 このパス名は、実システムルートから参照され、 .Xr chroot 8 されたディレクトリツリーのルートからの参照では .Em ありません。 .El .Pp オプションの変数は次のとおりです。 .Bl -tag -width ".Va NO_PREFETCHDISTFILES" +.It Va CD_PACKAGE_TREE +1 枚目および 2 枚目の CD-ROM イメージに追加する素材を含んだディレクトリです。 +1 枚目のディスクの追加ファイルは +.Pa ${CD_PACKAGE_TREE}/disc1 +に、2 枚目のディスクの追加ファイルは +.Pa ${CD_PACKAGE_TREE}/disc2 +に置きます。 +典型的には、この変数には、事前に呼び出した +.Cm package-split +ターゲットの出力ディレクトリを設定します。 +.It Va CVSARGS +.Xr cvs 1 +への追加の引数で、 +.Dq Li "-qR" +といったサブコマンドの前に置かれます。 .It Va CVSCMDARGS .Xr cvs 1 のコマンド .Ic checkout と .Ic update への追加の引数です。 例えば、この変数を .Dq Li "-D '01/01/2002 00:00:00 GMT'" に設定して .Dq Li "make release" または .Dq Li "make rerelease" すると、 .Xr cvs 1 はそれぞれ 2002 年 1 月 1 日 00:00:00 GMT のソースを チェックアウトまたはアップデートするよう .Xr cvs 1 に指示します。 -.It Va LOCAL_PATCHES -.Pa /usr/src -に対するパッチファイル。 -このパッチは、リリース構築を開始する前に、 -.Xr chroot 8 -環境で適用されます。 -.It Va PATCH_FLAGS -パッチファイル .It Va DOC_LANG 構築すべき SGML ベースドキュメンテーションの、言語とコード。 設定されないと、使用可能なすべての言語に対し、 ドキュメンテーションが構築されます。 .It Va DOCRELEASETAG ドキュメンテーションツリーのチェックアウト時に使用する CVS タグ。 通常、デフォルトで、ドキュメンテーションツリーの先頭が使用されます。 .Va RELEASETAG がリリースタグを指定する場合、 関連付けられたリリースバージョンがデフォルトの代りに使用されます。 .It Va EXTLOCALDIR .Pa ${CHROOTDIR}/usr/local にコピーされるディレクトリ。 .It Va EXTSRCDIR この変数で指定されるディレクトリは、 CVS checkout によって置かれたディレクトリの代わりに、 .Pa ${CHROOTDIR}/usr/src へとコピーされます。 .Dq Li "rerelease" では、このディレクトリはコピーされません。 cvs update が代わりに使用されます。 .It Va KERNEL_FLAGS リリース構築中のカーネル構築時に、この変数の内容が .Xr make 1 に渡されます。 例えば、この変数を .Dq Li "-j 4" に設定すると、 .Xr make 1 に最大 4 プロセスまで同時に実行することを指示することになります。 .It Va KERNELS コンパイルして -.Dq ベース -配布にインストールする、追加のカーネル設定のリストを指定します。 +.Dq base +ディストリビューションにインストールする、 +追加のカーネル設定のリストを指定します。 各カーネルは、 .Pa /boot/ にインストールされ、ローダから .Dq Li "boot " でブートできるようになります。 +.It Va LOCAL_PATCHES +.Pa /usr/src +に対するパッチファイル。 +このパッチは、リリース構築を開始する前に、 +.Xr chroot 8 +環境で適用されます。 +.It Va PATCH_FLAGS +パッチファイル .Va LOCAL_PATCHES を適用する際に用いる .Xr patch 1 コマンドに渡す引数。 .It Va LOCAL_SCRIPT .Xr chroot 8 環境で、ローカルパッチ適用直後に実行されるスクリプト。 .It Va MAKE_ISOS これを定義した場合、CD-ROM ステージのディレクトリの内容から、 ブータブル ISO CD-ROM イメージを生成します。 -.It Va DISC1_LABEL -disc1 の内容から生成される CD-ROM 用に使われるラベルです。 -デフォルトは -.Dq Li fbsd_miniinst -です。 -.It Va DISC1_NAME -disc1 の内容から生成される CD-ROM の ISO の -ファイル名の一部として使用される名前です。 -デフォルトは -.Dq Li miniinst -です。 -.It Va DISC2_LABEL -disc2 の内容から生成される CD-ROM 用に使われるラベルです。 -デフォルトは -.Dq Li fbsd_livefs -です。 -.It Va DISC2_NAME -disc2 の内容から生成される CD-ROM の ISO の -ファイル名の一部として使用される名前です。 -デフォルトは -.Dq Li disc2 -です。 .It Va NOCDROM 定義した場合、CD-ROM ステージのディレクトリを生成しません。 .It Va NODOC 定義した場合、 .Fx ドキュメンテーションプロジェクトの SGML ベースのドキュメントを生成しません。 しかしながら、 .Pa src/share/doc にある最小のドキュメンテーションセットから .Dq doc ディストリビューションが依然として作成されます。 .It Va NO_FLOPPIES 定義した場合、boot と fixit フロッピディスクイメージファイルを生成しません (これらをサポートするプラットフォーム用)。 .It Va NOPORTS 定義した場合、Ports Collection はリリースから省略されます。 -.It Va NOPORTREADMES -これを定義した場合、 -Ports Collection の各 port に対する readme ファイルを作成しません。 -デフォルトの動作は、 -.Dq Li "make release" -が -.Dq Li "make readmes" -を -.Pa ${CHROOTDIR}/usr/ports -から実行するというものであり、莫大な時間を費すことになります。 .It Va PORTSRELEASETAG ports ツリーのチェックアウト時に使用する CVS タグ。 通常、デフォルトで、ports ツリーの先頭が使用されます。 .Va RELEASETAG がリリースタグを指定する場合、 関連付けられたリリースバージョンがデフォルトの代りに使用されます。 .It Va NO_PREFETCHDISTFILES この変数が定義されている場合、 .Xr chroot 8 環境に入る前に、リリース構築に必要な distfile がダウンロードされません。 .Va NO_PREFETCHDISTFILES が設定されていない場合、取得が行われるのは、 .Va RELEASEDISTFILES から distfile を取得完了した後であることに注意してください。 .It Va RELEASEDISTFILES ports 用として、リリース構築に必要となる ディストリビューションファイルが存在するディレクトリです。 これにより、低速なリンク経由で distfiles をダウンロードする際に費やされる莫大な時間を 節約することができます。 .It Va RELEASENOUPDATE .Dq Li "make rerelease" の際にこの変数の値を設定した場合、 .Dq Li "cvs update" によるソースコード更新を行ないません。 -.It Ev RELEASETAG +.It Va RELEASETAG 構築するリリースに相当する CVS タグ。 未定義の場合、CVS ツリーの .Dv HEAD .Dq ( "-CURRENT スナップショット" ) から構築されます。 +.It Va SEPARATE_LIVEFS +live ファイルシステムを、1 枚目のディスクではなく、 +専用の CD-ROM 上に記録します。 .It Va TARGET_ARCH ターゲットとなるマシンプロセッサアーキテクチャ。 この環境変数は .Dq Nm uname Fl p の出力と同じものです。 異なるアーキテクチャ用にクロスビルドするにはこの環境変数を設定してください .It Va TARGET ターゲットとなるハードウェアプラットフォーム。 この環境変数は .Dq Nm uname Fl m の出力と同じものです。 ターゲットアーキテクチャをクロスビルドするのに必要な変数です。 例えば、PC98 マシン用にクロスビルドを行うには .Va TARGET_ARCH Ns = Ns Li i386 と .Va TARGET Ns = Ns Li pc98 が必要です。 .It Va WORLDDIR .Dq Li "make buildworld" が実行されたディレクトリです。 デフォルトは .Pa ${.CURDIR}/.. であり、通常は .Pa /usr/src を指します。 .It Va WORLD_FLAGS リリース構築中の世界 (world) 構築時に、この変数の内容が .Xr make 1 に渡されます。 例えば、この変数を .Dq Li "-j 4" に設定すると、 .Xr make 1 に最大 4 プロセスまで同時に実行することを指示することになります。 .El .Sh 関連ファイル .Bl -tag -compact .It Pa /etc/make.conf .It Pa /usr/doc/Makefile .It Pa /usr/doc/share/mk/doc.project.mk .It Pa /usr/ports/Mk/bsd.port.mk .It Pa /usr/ports/Mk/bsd.sites.mk .It Pa /usr/share/examples/etc/make.conf .It Pa /usr/src/Makefile .It Pa /usr/src/Makefile.inc1 .It Pa /usr/src/release/Makefile -.It Pa /usr/src/release/${arch}/drivers.conf .It Pa /usr/src/release/${arch}/boot_crunch.conf .It Pa /usr/src/release/${arch}/fixit_crunch.conf .El .Sh 使用例 以下のコマンド列は .Fx 4.9 release を構築する際に使用したものです。 .Bd -literal -offset indent cd /usr cvs co -rRELENG_4_9_0_RELEASE src cd src make buildworld cd release make release CHROOTDIR=/local3/release BUILDNAME=4.9-RELEASE \\ CVSROOT=/host/cvs/usr/home/ncvs RELEASETAG=RELENG_4_9_0_RELEASE .Ed .Pp これらのコマンドを実行すると、FTP ディストリビューション用と、 CD-ROM ディストリビューション用として使える完全なシステムが ディレクトリ .Pa /local3/release/R にできます。 .Pp 次のコマンド列は、ローカルで修正したソースツリーの .Dq "-CURRENT スナップショット" を構築するために使用できます。 .Bd -literal -offset indent cd /usr/src cvs diff -u > /path/to/local.patch make buildworld cd release -make release CHROOTDIR=/local3/release BUILDNAME=5.0-CURRENT \\ +make release CHROOTDIR=/local3/release BUILDNAME=6.0-CURRENT \\ CVSROOT=/host/cvs/usr/home/ncvs LOCAL_PATCHES=/path/to/local.patch .Ed .Sh 関連項目 .Xr cc 1 , .Xr crunchgen 1 , .Xr cvs 1 , .Xr install 1 , .Xr make 1 , .Xr patch 1 , .Xr uname 1 , .Xr md 4 , -.Xr drivers.conf 5 , .Xr make.conf 5 , .Xr build 7 , .Xr ports 7 , .Xr chroot 8 , .Xr mtree 8 , .Xr sysctl 8 .Rs .%T "FreeBSD Release Engineering" .%O http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/releng/ .Re .Rs .%T "FreeBSD Release Engineering of Third Party Packages" .%O http://www.FreeBSD.org/doc/en_US.ISO8859-1/articles/releng-packages/ .Re .Rs .%T "FreeBSD Developers' Handbook" .%O http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/developers-handbook/ .Re .Sh 歴史 .Fx 1.x では、チェックリストを手でチェックしながら、 .An Rod Grimes によりコンパイルされ、リリースが作成されました。 不完全さはさておくにしても、このチェックリストには、 ファイルシステムを使えるようにするためのこまごまとした要求が大量に 含まれており、その実行は拷問としかいいようがないものでした。 .Pp .Fx 2.0 リリースエンジニアリングを続ける中で、 .Pa src/release/Makefile を直して、隔離された無菌環境でリリースを構築する際の退屈な作業の ほとんどを自動的に行なえるようにすることに、顕著な努力が払われました。 .Pp 複数のブランチにまたがる 1000 回近くの改版を経て、 .Pa src/release/Makefile の .Xr cvs 1 ログには、リリースエンジニアたちが経験した苦難のいくばくかを示す 生々しい歴史の記録が刻み込まれています。 .Sh 作者 .Pa src/release/Makefile は、もともとは .An -nosplit .An Rod Grimes , .An Jordan Hubbard , .An Poul-Henning Kamp -が書きました。 +によって書かれました。 このマニュアルページは、 .An Murray Stokely Aq murray@FreeBSD.org -が書きました。 +によって書かれました。 .Sh バグ .Fx ドキュメンテーションに対するインフラストラクチャ変更は頻繁で、 これが原因でセキュリティブランチ上のリリース構築が失敗することがあります。 最後に完全にサポートされた .Fx リリースから ドキュメンテーションをチェックアウトし、リリース構築することで、 この問題を回避できます。 例: .Pp .Dl "make release RELEASETAG=RELENG_4_9 DOCRELEASETAG=RELEASE_4_9_0 ..." diff --git a/ja_JP.eucJP/man/man7/roff.7 b/ja_JP.eucJP/man/man7/roff.7 index c36d572211..3c062d98c7 100644 --- a/ja_JP.eucJP/man/man7/roff.7 +++ b/ja_JP.eucJP/man/man7/roff.7 @@ -1,1294 +1,1294 @@ '\" t .ig roff.man Last update: 3 Apr 2003 This file is part of groff, the GNU roff type-setting system. Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. written by Bernd Warken maintained by Werner Lemberg Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being this .ig-section and AUTHORS, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the Free Documentation License is included as a file called FDL in the main directory of the groff source package. .. .\" $FreeBSD$ .\" WORD: gremlin picture gremlin 図 . .\" -------------------------------------------------------------------- .\" Setup .\" -------------------------------------------------------------------- . .mso www.tmac . .if n \{\ . mso tty-char.tmac . ftr CR R . ftr CI I . ftr CB B .\} . .if '\*[.T]'dvi' \{\ . ftr CB CW .\} . . .\" -------------------------------------------------------------------- .\" String definitions . .\" Final `\""' comments are used to make Emacs happy, sic \"" . .\" The `-' sign for options. .ie t \{\ . ds @- \-\" . ds @-- \-\-\" .\} .el \{\ . ds @- -\" . ds @-- --\" .\} . .ds Comment \.\[rs]\[dq]\" .ds Ellipsis \.\|.\|.\&\" . . .\" -------------------------------------------------------------------- .\" Begin of macro definitions . .de c .\" this is like a comment request when escape mechanism is off .. . .eo . .c --------------------------------------------------------------------- . .de Text . nop \)\$* .. . .de CodeSkip . ie t \ . sp 0.2v . el \ . sp .. . .de Esc . ds @1 \$1\" . shift . Text \f[B]\[rs]\*[@1]\f[]\$* . rm @1 .. . .de QuotedChar . ds @1 \$1 . shift . nop `\f[B]\*[@1]\f[]'\$* . rm @1 .. . .c -------------------------------------------------------------------- . .c a shell command line .de ShellCommand . br . ad l . nh . Text \f[I]sh#\h'1m'\f[]\f[CR]\$*\f[]\&\" . ft R . ft P . hy . ad .. . .c -------------------------------------------------------------------- . .c ShortOpt ([c [punct]]) .c .c `-c' somewhere in the text. .c The second argument is some trailing punctuation. .c .de ShortOpt . ds @1 \$1\" . shift . nh . Text \f[CB]\*[@-]\f[]\f[B]\*[@1]\f[]\/\$* . hy . rm @1 .. . .de TP+ . br . ns . TP \$1 .. . .c -------------------------------------------------------------------- . .c Topic .c .de Topic . TP 2m . Text \[bu] .. . .ec .\" End of macro definitions . . .\" -------------------------------------------------------------------- .\" Title .\" -------------------------------------------------------------------- . .TH ROFF 7 "1 May 2003" "Groff Version 1.19" .SH 名称 roff \- roff の清書のコンセプトと歴史 . . .\" -------------------------------------------------------------------- .SH 解説 .\" -------------------------------------------------------------------- . .I roff とは清書プログラム群の一般名称です。 .IR troff , .IR nroff , .IR ditroff , .IR groff などの名前で知られています。 . roff 清書システムは、拡張可能なフォーマット用言語と、 印刷および他のテキスト書式への変換のための一連のプログラムからなります。 . 伝統的には、これが Unix の主たるテキスト処理システムでした。 すべての Unix 的なオペレーティングシステムは、 いまだに roff システムをコアパッケージとして配布しています。 . .P 今日、最も一般的な roff システムはフリーソフトウェアでの 実装である .IR "GNU roff", .BR groff (1) です。 . .I groff です。 groff より前の実装は .I 古典 (1973 年まで遡ります) と呼ぶことにします。 . .I groff は、古典である先祖の見た目や使用感および機能を実装していますが、 多くの拡張を持ちます。 . .I groff ほとんどすべての計算機システムで利用できるため、今日では事実上の roff 標準となっています。 .P 古い Unix システムでは、 .I Multics オペレーティングシステムのもっと古い .B runoff を実装した、 .B roff と呼ばれるバイナリを持つものがありました。 .B 歴史 節を参照してください。 このプログラムの機能は、古代の troff と比べてさえ限定されたものでした。 これはもうサポートされていません。 . この結果、この文書では、 .I roff という術語は常に .IR "roff システム" 一般を指し、古代の roff バイナリを指しません。 . .P その古さにもかかわらず、roff は今日でも広く使用されています。 例えば、UNIX システムのマニュアルページ -.RI ( man ページ ) +.RI ( "man ページ\/" ) や多くのソフトウェア書籍、システム文書、標準、企業の文書は roff で書かれています。 . テキストデバイスに対する roff 出力は、いまだに並ぶもののないほど優れて います。グラフィカルな出力も他のフリーの清書プログラムと同等の品質を 持っていますし、ものによっては商用システムのものよりも優れているときも あります。 . .P roff のもっとも有名なアプリケーションは .I マニュアルページ または単に .IR "man ページ" と呼ばれるものです。 これは、多くのオペレーティングシステムにおいて、 標準の文書化システムです。 . .P この文書は、 .IR "roff システム" の開発にまつわる歴史的な事実、 すべての roff バージョンに共通な使用側面や通常は .BR groff (1) のようなフロントエンドに隠されてしまうような roff パイプラインの詳細、 このフォーマット言語の一般概要、roff ファイル編集のこつ、 さらなる参考資料へのポインタを記述します。 . . .\" -------------------------------------------------------------------- .SH 歴史 .\" -------------------------------------------------------------------- . .I roff テキスト処理システムは、非常に長い歴史を持ち、1960 年代まで遡ります。 . roff システム自身 Unix オペレーティングシステムと密に繋っていますが、 その根源はより昔のオペレーティングシステムである CTSS および Multics です。 . . .\" -------------------------------------------------------------------- .SS "runoff の先祖" .\" -------------------------------------------------------------------- . .P .I roff の進化はオペレーティングシステムの歴史に密にかかわっています。 . その先祖である .B runoff は、 .I Jerry Saltzer によって .I CTSS .RI ( "Compatible Time Sharing System" ) オペレーティングシステム上で書かれました。 1961 年という早い時期です。 . 1963 年から CTSS が更に開発され、 Unix の有名な先祖であるオペレーティングシステム .URL http://\:www.multicians.org "Multics" になるとき、 .I runoff は文書テキスト処理の主たる書式になりました。 . 両オペレーティングシステムは当時非常に高価な計算機上でのみ動作したので、 それらは研究分野や政府や軍事の目的で主に使用されていました。 . .P 現代の roff に比べ、 .I runoff 言語の可能性は非常に限られていました。 . 1960 年代には、テキスト出力のみが可能でした。 . これは、長さ 2 のリクエストの集合により実装可能でした。 その多くは、roff でも同じく使用されています。 . この言語は、計算機世代以前の清書習慣に従ってモデル化されたものでした。 原稿中のドットで開始する行は、 後で手動で清書を行う人に対する清書の指示を表していたのです。 . .P runoff プログラムは、最初に .I PL/1 言語で記述され、後に .I C プログラム言語の祖母である .I BCPL で記述されました。 . Multics オペレーティングシステムでは、 ヘルプシステムが runoff で扱われていました。 これは、roff が Unix マニュアルページを扱う仕事と似ています。 . runoff 言語で書かれた文書は、現存します。 例えば Saltzer のホームページを見てください。 .B "関連項目" の節を参照してください。 . . .\" -------------------------------------------------------------------- .SS "古典的な nroff/troff システム" .\" -------------------------------------------------------------------- . 1970 年代には、Multics の子 .I Unix の人気がどんどんでてきました。 これは、購入可能なマシン上で動作することと、 当時大学ではより簡単に入手可能であったためです。 . MIT (the Massachusetts Institute of Technology) では、 Unix を実行する PDP-11 計算機からのグラフィックス出力デバイスである、 Wang .I Graphic Systems CAT 清書機を動かす必要がありました。 . runoff の機能はこの目的には足りなかったので、 .I "Josef F. Osanna" の手により更に強力なテキストフォーマットシステムへと開発されました。 彼は、Multics オペレーティングシステムの主たる開発者であり、 いくつかの runoff ポートのプログラマでもあります。 . .P .I runoff という名前は .I roff に縮められました。 Osanna のコンセプトである非常に拡大された言語は、既に完全な .I "roff システム" のすべての要素を含んでいました。 . すべての現代的な roff システムは、 このシステムとの互換性を実装しようとしています。 . そのため、Joe Osanna は roff システムの父とも呼べるのです。 . .P この最初の .I roff システム は 3 個のフォーマットプログラムを持っていました。 . .TP .B troff .RI ( "植字機 roff\/" ) は、唯一のデバイスとして .I CAT 植字機用のグラフィカル出力を生成しました。 . .TP .B nroff は、端末および行プリンタに適したテキスト出力を生成しました。 . .TP .B roff は、以前の runoff プログラムの再実装でしたが、機能は限定されていました。 このプログラムは後のバージョンで捨てられました。 . 今日では、 .I roff という名前は、troff/\:nroff システム全体を指すために使用されます。 . .P Osanna の最初のバージョンは PDP-11 アセンブリ言語で記述され、 1973 年にリリースされました。 . .I Brian Kernighan が、これを C プログラミング言語で書き直すことで、 .I roff 開発に加わりました。 . C バージョンは 1975 年にリリースされました。 . .P フォーマット言語 .BR nroff / troff プログラムは、著名な .IR "Troff User's Manual [CSTR\~#54]" に記述されています。 これは、1976 年に最初に出版され、 1992 年まで Brian Kernighan によって改訂され続けました。 . この文書は .I "古典 troff" の仕様書です。 後のすべての .I roff システムは、この仕様との互換性を確立しようと試みました。 . .P 1977 年に約 50 歳にて Osanna が心臓発作で死去した後は、 Kernighan が troff の開発を続けました。 . 次のマイルストーンは、 より多くのデバイスと中間出力言語と後処理システムのサポートのために、 一般的なインタフェースを troff に備えることでした。 . これは今日でも使用されていますので、これにより、 .I "roff システム" の構造が完成しました。 .BR "ROFF の使い方" の節を参照してください。 . 1979 年には、これらの斬新なシステムが論文 .IR "[CSTR\~#97]" に記述されました。 この新しい troff バージョンは、 .I groff を含む既存するすべてのより新しい troff システムの基礎となりました。 . システムによっては、この .I デバイス独立 troff だけで、 .BR ditroff (7) と呼ばれるバイナリを持つものもあります。 . すべての現代的な .B troff プログラムは、既に、完全な ditroff 機能を自動的に提供します。 . . .\" -------------------------------------------------------------------- .SS "商用化" .\" -------------------------------------------------------------------- . 簡単に入手可能な Unix\~7 オペレーティングシステムが商用化されたときに、 大きな退化が発生しました。 . 分岐したオペレーティングシステムが大量発生し、 互いに非互換な拡張をめぐって争いました。 . 幸運なことに、これらの非互換性は、元の troff とは争いませんでした。 . すべての商用 roff システムは、 Osanna/\:Kernighan のオープンソースコードと文書を多用しましたが、 それらに些細な追加をしただけで \[lq]彼等\[rq] のシステムとして販売しました。 . .P 古代 Unix と古典 troff のソースコードは、20 年もの間利用不可能でした。 . 幸運なことに、2001 年に Caldera が SCO UNIX を購入しました。 . そして Caldera は、古代のソースコードに対する、 非商用目的でのオンラインアクセスを可能にしました。 .BR "関連項目" を参照してください。 . . .\" -------------------------------------------------------------------- .SS "フリーの roff" .\" -------------------------------------------------------------------- . 商用 roff システムのいずれも、 一般的な roff 開発の後継者の地位を獲得できませんでした。 . 誰もが各々の物にだけ興味があったのです。 . これは 1980 年代に、 一度は素晴しかった Unix オペレーティングシステムの急降下に繋がります。 . .P 急速に突き進む商用化への対抗策として、 AT&T Bell Labs は、彼等の .I Plan\~9 オペレーティングシステムで救援プロジェクトを立ち上げようとしました。 . これは非商用にはソースコードですら自由に利用可能でしたが、 プロプラエタリなライセンスがあって、自由な開発を阻害していたのです。 . このコンセプトは時代遅れであったので、 メインストリームの開発をまとめるプラットフォームとしては Plan\~9 は受け入れられませんでした。 . .P 唯一の救済は、立ち上がりつつあったフリーのオペレーティングシステム (386BSD, GNU/\:Linux 等) やソフトウェアプロジェクトによるもので、 それは 1980 年代および 1990 年代のことです。 . これらは古代 Unix の機能と多くの拡張を実装していましたので、 古い経験は失われなかったのです。 . 21 世紀には、Unix 的なシステムは、再度、 計算機産業におけるメジャーな要因になりました \[em] フリーソフトウェアのおかげで。 . .P 最重要なフリー roff プロジェクトは troff の GNU ポートです。 James Clark によって作成され、 .URL http://\:www.gnu.org/\:copyleft "GNU Public License" にされました。 . これは .I groff .RI ( "GNU roff" ) と呼ばれます。 概要は .BR groff (1) を参照してください。 . .P groff システムは、依然として活発に開発されています。 . これは古典 troff と互換ですが、多くの拡張が追加されています。 . ほとんどすべての計算機システムで利用できる、 はじめての roff システムです \[em] しかもフリーです。 . このため、今日では groff が事実上の roff 標準となっています。 . . .\" -------------------------------------------------------------------- .SH "ROFF の使い方" .\" -------------------------------------------------------------------- . ほとんどの人々は、実際に roff を使っていることにさえ気付かないでしょう。 . システムマニュアルページ (man ページ) を読むときには、 roff がバックグラウンドで動作しているのです。 . roff 文書は、生粋のビューアである .BR xditview (1x) で閲覧可能です。 これは、X ウィンドウ配布物の標準プログラムです。 .BR X (7x) を参照してください。 . 明示的に roff を使うのもまた難しくはありません。 . .P roff の実装によっては、ラッパプログラムがあり、 シェルのコマンドラインから roff システムを簡単に使えるようにしています。 . 例えば、GNU roff 実装では、次のようになっています。 古典 troff の長いコマンドパイプを避けるためのコマンドラインオプションを 与えるために、 .BR groff (1) が提供されています。 .BR grog (1) プログラムは、文書をもとに、groff を起動するための引数を推測します。 コマンドラインオプションを指定したくない方は、 .BR groffer (1) プログラムを試すと良いでしょう。 こちらは、groff ファイルと man ページをグラフィカルに表示するためのものです。 . . .\" -------------------------------------------------------------------- .SS "roff パイプ" .\" -------------------------------------------------------------------- . 各 roff システムは、プリプロセッサ、roff フォーマットプログラム、 一組のデバイスポストプロセッサ群からなります。 . このコンセプトは、 .I パイプライン 機構を多用します。 それはすなわち、一連のプログラムが次々と呼ばれ、そこでは、 行列上の各プログラムの出力が次のプログラムの入力となるというものです。 . .CodeSkip . .ds @1 "cat \f[I]file\f[P] |\"" .ds @2 "\*[Ellipsis] | \f[I]preproc\f[P] | \*[Ellipsis] |\"" .ds @3 "troff \f[I]options\f[P] | \f[I]postproc\f[P]\"" . .ShellCommand "\*[@1] \*[@2] \*[@3]" . .rm @1 .rm @2 .rm @3 .P プリプロセッサは roff コードを生成し、これは roff フォーマッタ (例えば troff) に与えられます。 次に、roff フォーマッタが、 .I 中間出力 を生成し、これがデバイスポストプロセッサプログラムに与えられて 印刷や最終出力に使用されます。 . .P これらの部分すべてが、各自のプログラム言語を使用します。 各言語は、他の部分とは完全に独立です。 . 更に、特殊用途向けの roff マクロパッケージも含めることが可能です。 . .P ほとんどの roff 文書は、なにがしかのパッケージのマクロを使用し、 それらをプリプロセッサのコードと混ぜて使い、 それらに素の roff 言語の要素で味付けします。 . roff フォーマット言語の完全な力は、ユーザはほとんどの場合必要としません。 マクロパッケージのプログラマだけが、そのすさまじい詳細を知る必要があるのです。 . . . .\" -------------------------------------------------------------------- .SS "プリプロセッサ" .\" -------------------------------------------------------------------- . roff プリプロセッサは、 roff フォーマット言語に構文的に従う出力を生成する、任意のプログラムです。 . 各プリプロセッサは、 このプリプロセッサを通すと、roff コードに変換されるような、 自分自身の言語を定義します。 . このような言語で記述された部分は、roff 文書に埋め込めます。 このような部分は、特殊な roff リクエストやマクロで識別されます。 . プリプロセッサコードで拡張された文書は、 対応するすべてのプリプロセッサを通してから、 実際の roff フォーマットプログラムに通す必要があります。 これにより、フォーマッタが、外部コードを単に無視できるようになります。 . プリプロセッサプログラムは、文書のうち、 自分自身のものと判断した部分のみを抽出して変換します。 . .P フリーおよび商用の roff プリプロセッサが多数あります。 . すべてのシステムで利用できるわけではないものものありますが、 プリプロセッサのほんの小さな集合は、 roff システムの一部とみなされます。 . 古典的なプリプロセッサは次の通りです。 . .de @TP .\" local indent for .TP .TP \\w'\\f[B]soelim\\f[P]'u+2n .. .P .RS .PD 0 .@TP .B tbl 表のためのものです。 .@TP .B eqn 数式のためのものです。 .@TP .B pic 図の描画のためのものです。 .@TP .B refer 参考文献の参照用です。 .@TP .B soelim 標準の場所からマクロファイルをインクルードするためのものです。 .PD .RE . .P すべてのシステムで使用可能ではありませんが、 他の有名なプリプロセッサは次の通りです。 . .P .RS .PD 0 .@TP .B chem 化学式の描画のためのものです。 .@TP .B grap グラフィカル要素を構築するためのものです。 .@TP .B grn .BR gremlin (1) 図を埋め込むためのものです。 .PD .RE . .rm @TP . .\" -------------------------------------------------------------------- .SS "フォーマットプログラム" .\" -------------------------------------------------------------------- . .I roff フォーマッタ は、roff フォーマット言語で記述された文書 または roff マクロパッケージを使用する文書を、構文解析します。 . 生成される .IR "中間出力" は、フォーマットプログラムのコマンドラインオプションで指定されている、 単一のデバイスポストプロセッサに与えられることを意図しています。 . 文書は、必要なすべてのプリプロセッサに事前に通されていることが必要です。 . .P roff フォーマッタが生成する出力は、もうひとつの言語、すなわち .IR "中間出力書式" や .IR "troff 出力" と呼ばれるもので表現されます。 この言語は、最初に .IR "[CSTR\~#97]" で仕様が記述されました。 この GNU 拡張が -.BR groff_out 5 +.BR groff_out (5) に記述されています。 . 中間出力言語は、高位の roff 言語に対する、アセンブリ言語のようなものです。 . 生成された中間出力はある特殊デバイス用に最適化されたものですが、 言語はすべてのデバイスに共通です。 . .P roff 生成器は、roff システムの心臓です。 . 典型的な roff は、2 個の生成器、すなわちテキストデバイス用の .B nroff と、グラフィカルデバイス用の .B troff を持っています。 . .P しばしば、 .I troff という名前が、両方の生成器を指す一般術語として使用されます。 . . .\" -------------------------------------------------------------------- .SS "デバイスとポストプロセッサ" .\" -------------------------------------------------------------------- . デバイスとは、プリンタやテキスト端末やグラフィカル端末といった ハードウェアインタフェースや、別のテキスト形式やグラフィカル形式への 変換のソフトウェアインタフェースです。 . .P roff ポストプロセッサは、troff 出力を、 特殊デバイスに適した形式に変換するプログラムです。 . roff ポストプロセッサは、出力対象に対するデバイスドライバのようなものです。 . .P 各デバイスに対し、 そのデバイスに最適化されたポストプロセッサプログラムがあります。 . ポストプロセッサは、生成された中間出力を構文解析し、 デバイスに直接送られるデバイス固有コードを生成します。 . .P デバイスおよびポストプロセッサの名前は固定ではありません。 なぜなら、これらは一般的に、実際の計算機のソフトウェアおよびハードウェアの 能力に依存するからです。 . 例えば、 .I [CSTR\~#54] で述べられている古典的なデバイスは、 古典的な時代から大部変わってしまいました。 . 古いハードウェアはもはや存在しませんし、 古いグラフィカル変換器は、現在使えるものと比較すると、非常に不正確です。 . .P 例えば、古典的な troff における Postscript デバイス .I post は解像度 720 でしたが、groff の .I ps デバイスは 72000 であり、100 倍の改善がなされています。 . .P 今日では、プリンタのようなほとんどのデバイスに対しては オペレーティングシステムがデバイスドライバを提供しますので、 それぞれのプリンタに対して特殊なハードウェアポストプロセッサを記述する 必要はありません。 . . .\" -------------------------------------------------------------------- .SH "ROFF プログラム" .\" -------------------------------------------------------------------- . roff を使用した文書は、普通のテキストファイルを roff のフォーマット用 要素で修飾したものです。 . roff フォーマット言語は非常に強力です。 ほぼ完全なプログラミング言語であり、言語を拡張する要素を提供します。 . これらを使用することで、特殊な応用に適したマクロパッケージを開発する ことが可能です。 . このようなマクロパッケージは、素の roff よりも簡単に扱えます。 . ほとんどの人々はマクロパッケージを選択することで、 roff 言語の内部について気にしなくても良くなっています。 . . .\" -------------------------------------------------------------------- .SS "マクロパッケージ" .\" -------------------------------------------------------------------- . マクロパッケージは、ある特殊な種類の文書を簡便な方法で フォーマットするのに適したマクロの集合です。 . マクロパッケージによって、roff の使い勝手が格段に良くなります。 . パッケージのマクロ定義は、 .IB name .tmac (または .BI tmac. name\c ) と呼ばれるファイルに保管されています。 . すべての tmac ファイルは、 1 つまたはそれ以上のディレクトリ中の標準の場所に保管されています。 . マクロパッケージの命名およびその置き場所についての一般的な詳細は .BR groff_tmac (5) にあります。 . .P 文書が使用するマクロパッケージは、 .BR troff (1) にあるようにフォーマッタのコマンドラインオプション .ShortOpt m で宣言することもできますし、 .BR groff (7) にあるように文書中で roff 言語のファイルインクルードリクエストで 指定可能です。 . .P 有名な古典的マクロパッケージとしては、典型的なマニュアルページ用の .I man や、BSD スタイルのマニュアルページ用の .I mdoc や、書籍・記事・手紙用の .I me (おそらく、作成者 .I Eric Allman のファーストネームから来ています) や、 -.I ms +.I ms .RI ( "Manuscript Macros" から来ています) や .I mm .RI ( "Memorandum Macros" から来ています) があります。 . . .\" -------------------------------------------------------------------- .SS "roff フォーマット言語" .\" -------------------------------------------------------------------- . 古典的な roff フォーマト言語は .I Troff User's Manual .IR "[CSTR\~#54]" に記述されています。 . roff 言語はリクエスト、マクロ定義、エスケープシーケンス、 文字列変数、数値レジスタまたはサイズレジスタ、そして 制御構造を提供する完全なプログラミング言語です。 . .P .I リクエスト は、シェルプロンプトにおけるコマンドのような、 定義された基本的なフォーマット用コマンドです。 . ユーザは、定義済の roff 要素を使用して、 リクエストのような要素を定義可能です。 . これらは、 .I マクロ と呼ばれます。 . 文書の著者は、リクエストとマクロを使う際の違いに 気づくことはないでしょう。どちらもドット 始まりの単独行で記述されます。 . .P .I エスケープシーケンス は、roff の要素であり、バックスラッシュ .QuotedChar \[rs] で始まります。 どこにでも挿入することができ、 それは行のテキストのまんなかであっても構いません。 . これらはさまざまな機能を実装するのに 使われます。 それには、 .Esc ( を用いた非 ASCII 文字の挿入、 .Esc f を用いたフォントの変更、 .Esc \[dq] を用いた文中のコメント、 .Esc \[rs] のような特殊な制御文字のエスケープ、 その他多くの機能が含まれます . .P .I 文字列 は文字列を格納可能な変数です。 . 文字列は、 .B .ds リクエストで格納可能です。 . 格納された文字列は、後で .B \[rs]* エスケープシーケンスを使用することで取り出せます。 . .P .I レジスタ は数値やサイズを格納します。 . レジスタは、 .B .nr リクエストで設定可能であり、その値は .BR "\[rs]n" エスケープシーケンスで取り出せます。 . . .\" -------------------------------------------------------------------- .SH "ファイル名の拡張子" .\" -------------------------------------------------------------------- . マニュアルページ (man ページ) はファイル名の拡張子として セクション番号をとります。例えば、この文書のファイル名は .IR roff.7 です。つまり、この文書はマニュアルページの セクション 7 . .P 古典的なマクロパッケージは、パッケージ名を拡張子にとります。 .I me マクロパッケージを使った文書は .IB file. me となり、 .IR mm マクロパッケージに対しては .IB file. mm 、 .IR ms マクロパッケージに対しては .IB file. ms 、 .I pic ファイルに対しては .IB file. pic といった具合です。 . .P roff 文書の一般的な命名方式はありませんが、時々 .I troff ファイル 用に .IB file. tr が使われているのが見受けられます。 . roff ファイル用に標準のファイル名拡張子が必要なのかもしれません。 . .P ファイル名拡張子は、 .BR less (1) ページャと組み合わせると、非常に便利なことがあります。 . これにより、シェル環境変数で指定されるコマンドラインパイプ .BR LESSOPEN へすべての入力を与えることが可能となります。 この処理はうまく書けませんので、例を書いておきます: . .CodeSkip .ShellCommand LESSOPEN='|lesspipe %s' .CodeSkip . ここで .B lesspipe は、システムが提供するコマンドやあなたが書いたシェルスクリプトです。 . . .\" -------------------------------------------------------------------- .SH "ROFF の編集" .\" -------------------------------------------------------------------- . roff 文書を編集するための最良のプログラムは Emacs (または Xemacs) です。 .BR emacs (1) を参照してください。 これは、あらゆる roff 方言に適した .I nroff モードを提供します。 . このモードは、次の方法で有効にできます。 . .P Emacs でファイルを編集しているときには、 .RI ` "M-x nroff-mode" ' とタイプすることでモードを変えられます。 ここで、 .B M-x は .B Meta キー (または .BR Alt ) を押したままで同時に .BR x キーを押すことを意味します。 . .P ファイルをエディタにロードしたときに自動的にモードを選択するようにする ことも可能です。 . .Topic もっとも一般的な方法は、次の 3 個のコメント行を、ファイルの最後に 含めることです。 . .CodeSkip .nf .B \*[Comment] Local Variables: .B \*[Comment] mode: nroff .B \*[Comment] End: .fi . .Topic 例えば man ページのような、あるファイル名拡張子の集合は、 nroff モードを自動的に有効にします。 . .Topic 理論上は、ファイルの最初の行として .CodeSkip .B \*[Comment] \%-*-\ nroff\ -*- .CodeSkip を書いておくことで、ロード時に nroff モードを開始可能です。 . 不幸なことに、これで混乱してしまう .B man プログラムのようなアプリケーションがありますので、 この方法は価値が低下しています。 . .P すべての roff 整形器は、自動化された改行と水平および垂直の間隔調整を 提供します。 . これを邪魔しないようにするには、次のこつが役立つでしょう。 . .Topic roff 文書に、空の行や空行を入れないでください。 . 構造的な要素が必要な場合には、代りに、 空のリクエスト (ドットのみからなる行) や、行コメント .B \*[Comment] を使ってください。 . .Topic 予期せぬ動作になるので、行を空白で開始しないでください。 . インデントされた段落は、roff リクエストで制御された方法で構築可能です。 . .Topic 各文をそれ自身の独立した行で開始することによって、 ドットが略語を終端するのか文を終端するのかによって、 ドットの後の空間を調整します。 . 両者を区別するために、各文の後で、改行してください。 . .Topic 更に、Emacs でオートフィルモードを使用するには、各文の後に、 空の roff リクエスト (ドットのみの行) を入れるのが最良です。 . .P 次の例は、最適な roff 編集がどのように見えるかを示しています。 . .IP .nf This is an example for a roff document. .Text . This is the next sentence in the same paragraph. .Text . This is a longer sentence stretching over several lines; abbreviations like `cf.' are easily identified because the dot is not followed by a line break. .Text . In the output, this will still go to the same paragraph. .fi . .P Emacs 以外にも、nroff スタイルファイルを提供するものがあります。 例えば、 .BR vi (1) の拡張である .BR vim (1) がそうです。 . . .\" -------------------------------------------------------------------- .SH バグ .\" -------------------------------------------------------------------- . .I UNIX\[rg] は、Open Group の登録商標です。 . Caldera が SCO UNIX を 2001 年に買収して以来、事態はずいぶん良く なりました。 . . .\" -------------------------------------------------------------------- .SH "関連項目" .\" -------------------------------------------------------------------- . roff 関連の文書は沢山あります。 . 古典的な troff に関するオリジナルの論文は、まだ入手可能であり、 groff のすべての側面について非常に細かいことまで記述されています。 . . .\" -------------------------------------------------------------------- .SS "インターネットサイト" .\" -------------------------------------------------------------------- . .TP troff.org .URL http://\:www.troff.org "The historical troff site" には、roff のすべての歴史的な側面に関する概要とポインタがあります。 . .TP Multics .URL http://\:www.multicians.org "The Multics site" には、MIT プロジェクト、CTSS や Multics や初期の Unix や .IR runoff の多くの情報があります。 用語解説や古代文書への多くのリンクが、特に有用でしょう。 . .TP Unix Archive .URL http://\:www.tuhs.org/\:Archive/ \ "The Ancient Unixes Archive" . には、Caldera が 2001 年以来パブリックにした古代 Unix のソースコードや バイナリ (troff のソースコードとその文書を含む) があります。 例えば、著名な Unix version\~7 for PDP-11 は .URL http://\:www.tuhs.org/\:Archive/\:PDP-11/\:Trees/\:V7 \ "Unix V7 site" にあります。 . .TP Developers at AT&T Bell Labs .URL http://\:cm.bell-labs.com/\:cm/\:index.html \ "Bell Labs Computing and Mathematical Sciences Research" . には、初期の開発者の情報を追跡するための、検索機能があります。 . .TP AT&T Bell Labs による Plan 9 .URL http://\:plan9.bell-labs.com "The Plan\~9 operating system" . です。 . .TP runoff .URL http://web.mit.edu/\:Saltzer/\:www/\:publications/\:pubs.html \ "Jerry Saltzer's home page" . には、古代の runoff 整形言語を使用した文書があります。 . .TP CSTR の論文 .URL http://\:cm.bell-labs.com/\:cm/\:cs/\:cstr.html \ "The Bell Labs CSTR site" . には、オリジナルの troff マニュアル (CSTR #54, #97, #114, #116, #122) と有名な歴史的なプログラミング文書があります。 . .TP GNU roff .URL http://\:www.gnu.org/\:software/\:groff "The groff web site" には、実際の標準 roff である、フリー roff 実装の groff があります。 . . .\" -------------------------------------------------------------------- .SS "歴史的な roff 文書" .\" -------------------------------------------------------------------- . 多くの古典的な .troff 文書が、まだオンラインで入手可能です。 . troff 言語の主要な 2 冊のマニュアルは次の通りです。 . .TP [CSTR\~#54] J. F. Osanna, .URL http://\:cm.bell-labs.com/\:cm/\:cs/\:54.ps \ "\fINroff/\:Troff User's Manual\fP" ; . Bell Labs, 1976; revised by Brian Kernighan, 1992. . .TP [CSTR\~#97] Brian Kernighan, .URL http://\:cm.bell-labs.com/\:cm/\:cs/\:97.ps \ "\fIA Typesetter-independent TROFF\fP" , . Bell Labs, 1981, revised March 1982. . .P 「小言語」の roff 論文は次の通りです。 . .TP [CSTR\~#114] Jon L. Bentley and Brian W. Kernighan, .URL http://\:cm.bell-labs.com/\:cm/\:cs/\:114.ps \ "\fIGRAP \(em A Language for Typesetting Graphs\fP" ; . Bell Labs, August 1984. . .TP [CSTR\~#116] Brian W. Kernighan, .URL http://\:cm.bell-labs.com/\:cm/\:cs/\:116.ps \ "\fIPIC -- A Graphics Language for Typesetting\fP" ; . Bell Labs, December 1984. . .TP [CSTR\~#122] J. L. Bentley, L. W. Jelinski, and B. W. Kernighan, .URL http://\:cm.bell-labs.com/\:cm/\:cs/\:122.ps \ "\fICHEM \(em A Program for Typesetting Chemical Structure Diagrams, \ Computers and Chemistry\fP" ; . Bell Labs, April 1986. . . .\" -------------------------------------------------------------------- .SS "マニュアルページ" .\" -------------------------------------------------------------------- . 構造が複雑であるため、完全な roff システムには、複数の man ページが 含まれ、それぞれが roff のあるひとつの側面を記述しています。 . 不幸なことに、異なった roff 実装間でも一般的となる、 文書の命名方法はありません。 . .P .IR groff では、man ページ -.BR groff 1 +.BR groff (1) に、groff で利用可能なすべての文書の概観が含まれます。 . .P 他のシステムでは、おまかせしますが、 .BR troff (1) から始めると良いかもしれません。 . . .\" -------------------------------------------------------------------- .SH 作者 .\" -------------------------------------------------------------------- . Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. . .P この文書は FDL (GNU Free Documentation License) バージョン 1.1 以降の条項のもとに配布されています。 . FDL のコピーをシステム上に持っているはずです。 また、これはオンライン .URL http://\:www.gnu.org/\:copyleft/\:fdl.html "GNU copyleft site" でも入手可能です。 . .P このドキュメントは .IR groff すなわち GNU roff 配布物の一部です。 . .MTO bwarken@mayn.de "Bernd Warken" が書き、 .MTO wl@gnu.org "Werner Lemberg" が管理しています。 . . .\" -------------------------------------------------------------------- .\" Emacs setup .\" -------------------------------------------------------------------- . .\" Local Variables: .\" mode: nroff .\" End: diff --git a/ja_JP.eucJP/man/man7/security.7 b/ja_JP.eucJP/man/man7/security.7 index c66a05f418..dd7613eab8 100644 --- a/ja_JP.eucJP/man/man7/security.7 +++ b/ja_JP.eucJP/man/man7/security.7 @@ -1,893 +1,900 @@ .\" Copyright (C) 1998 Matthew Dillon. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" %FreeBSD: src/share/man/man7/security.7,v 1.39 2004/08/07 04:40:20 imp Exp % .\" .\" $FreeBSD$ .Dd September 18, 1999 .Dt SECURITY 7 .Os .Sh 名称 .Nm security .Nd .Fx におけるセキュリティ入門 .Sh 解説 セキュリティは、システム管理者とともに始まり、システム管理者と ともに終る機能です。 .Bx マルチユーザシステムは、昔ながらのセキュリティをいくらかは備えて いますが、さらなるセキュリティ機構を組み込んで維持していくことで、ユーザを .Dq 正直に し続ける仕事は、システム管理者の最も大きな責務の一つでしょう。マシンは、 管理者が設定しただけのセキュリティしか示しません。セキュリティに関する 問題は、むしろ、便利さを求める人間との競合問題です。一般に、 .Ux システムは莫大な数のプロセスを同時に実行させることができ、 それも、サーバとして動作するものが多いのです。つまり、外部の何者かが 接続してきて、サーバプロセスと会話することができるということなのです。 昨日まで使われていたミニコンピュータやメインフレームは、今日では デスクトップコンピュータが取って代わり、しかも、それらはネットワークで結ばれて インターネットと接続されるようになりました。これにより、セキュリティは 昔と比べてはるかに大きな問題となっています。 .Pp セキュリティは、タマネギの階層のようなアプローチを通すと最もよく実装できます。 手短に言って、やりたいことは、便利さを損ねない程度にできるだけ多くの 階層を作り、システムに侵入されていないかを注意深く監視することです。 セキュリティの階層を作りすぎたくはありません。作りすぎると、侵入の 検出が妨げられることになるでしょう。どんなセキュリティ機構でも、 侵入の検出をすることが唯一とても重要なことなのですから。 例えば、システムの各バイナリに .Cm schg フラグ ( .Xr chflags 1 参照) を設定するのは大して意味がありません。 このフラグを設定すると、一時的にはバイナリを保護することができますが、 侵入してきた攻撃者が容易に検知可能な変更をすることを妨げてしまい、 結果として、マシンのセキュリティ機構が攻撃者を まったく検知できなくなってしまうからです。 .Pp システムセキュリティには、さまざまな形での攻撃に対処することも ついて回ります。攻撃には、root を破ろうとはしないが、システムを クラッシュさせたり、さもなければ、システムを使用不能にしたり しようとするものも含まれています。 セキュリティに関する問題は、いくつかのカテゴリに分類することができます。 .Bl -enum -offset indent .It サービス不能攻撃 (DoS) .It ユーザアカウントにかかる危険 .It アクセス可能なサーバを経由した root 権限にかかる危険 .It ユーザアカウントを通した root 権限にかかる危険 .It 裏口の作成 .El .Pp サービス不能攻撃とは、マシンから必要な資源を奪う行為です。 サービス不能攻撃は、普通は、そのマシンで実行されるサーバや ネットワークスタックを圧倒して、マシンをクラッシュさせたり、 さもなければマシンを使えなくしたりするような力任せの方法です。 サービス不能攻撃のいくつかは、 ネットワークスタックのバグを利用して、パケット一つでマシンを クラッシュさせようとします。後者は、 カーネルにバグ修正を施すことによってのみ修正することができます。 サーバプロセスに対する攻撃は、オプションを適切に指定して、 不利な状況にあるシステムにおいて、サーバプロセスが引き起こす負荷に限界を設けることで 修正することができます。これらに比べると、ネットワークへの力任せの攻撃への 対応はずっと難しくなります。たとえば、偽造パケットによる攻撃 .Pq spoof-packet attack は、インターネットからシステムを切り離す以外の方法で防ぐことは ほとんど不可能です。 それによって、マシンを落としてしまうことはできないかもしれませんが、 インターネット回線をいっぱいにしてしまうことはできます。 .Pp ユーザアカウントを危険に晒してしまう問題は、サービス不能攻撃よりもずっとよくある 問題です。このご時勢でも、自分たちのマシンで標準の .Xr telnetd 8 , .Xr rlogind 8 , .Xr rshd 8 , .Xr ftpd 8 サーバを実行させているシステム管理者は多いのです。これらの サーバは、デフォルトでは、暗号化されたコネクション上で動作していません。 その結果、抱えているユーザ数が標準くらいであれば、リモートログイン (そのシステムにログインするには最も普通で便利な方法です) しているユーザのうち一人以上は、パスワードを覗き見られて しまうでしょう。 システム管理者が注意深い人ならば、たとえログインが成功していたとしても、 リモートアクセスログを解析して、疑わしいソースアドレスを探すものです。 .Pp ひとたび攻撃者がユーザアカウントへのアクセス権を入手すると、攻撃者が root の権限を破る可能性があることを仮定するべきです。しかし、 セキュリティを十分維持し、手入れの行き届いたシステムにおいては、 あるユーザアカウントへのアクセスが可能となっても、攻撃者に必ずしも root へのアクセス権を与えるとは限らないのが現実です。この違いは重要です。 というのは、root へのアクセス権がなければ、一般的に、攻撃者は自分の 侵入の痕跡を隠蔽することができませんし、そのユーザのファイルを引っかき回したり、 マシンをクラッシュさせたりできるのがせいぜいです。 ユーザアカウントが危険に晒されるということは、たいへんよく起こることです。 なぜなら、ユーザは、システム管理者ほどには前もって注意を払わない 傾向があるからです。 .Pp システム管理者は、あるマシン上で root の権限を破る方法は、潜在的に 何通りもあるのだということを 心しておかねばなりません。攻撃者が root のパスワードを知ってしまうかも しれません。攻撃者が root の権限で実行されるサーバのバグを見つけ、 ネットワークからそのサーバへ接続して root の権限を破ることができるかも しれません。ひとたびユーザアカウントを破ると、ユーザアカウントから root の権限を破ることが可能であるというバグを持つ SUID-root プログラムの 存在を、攻撃者は知っているかもしれません。 あるマシン上で、攻撃者が root の権限を破る方法を知ったとすると、 攻撃者は、裏口を作る必要などないかもしれません。 発見され、ふさがれた root の穴の多くには、攻撃者が侵入した跡を消そうとして たくさん仕事した結果が含まれています。 そのためにこそ、多くの攻撃者は裏口を作るのです。この裏口は、攻撃者の 検出をするのに便利なやり方です。攻撃者に裏口を作らせないようにする ということは、セキュリティにとっては実際には良くないことかもしれません。 なぜなら、そうすることで、攻撃者が最初に侵入してくるために使用した セキュリティホールがふさがるわけではないからです。 .Pp セキュリティを改善する方法は、常に、 .Dq タマネギの皮剥き のように 複数の層のアプローチで実装されるべきです。これらは次のように分類できます。 .Bl -enum -offset indent .It root とスタッフのアカウントの安全性を高める。 .It root の安全性を高める \(em root 権限のサーバと SUID/SGID バイナリ。 .It ユーザアカウントの安全性を高める。 .It パスワードファイルの安全性を高める。 .It カーネルのコア、raw デバイス、ファイルシステムの安全性を高める。 .It システムに対して行なった、不適切な変更をすばやく検出する。 .It 偏執狂的方法。 .El .Sh root アカウントとスタッフアカウントの安全性を高める root のアカウントの安全性を確保しないうちからスタッフのアカウントの安全性を うんぬんしてもしかたがありません。ほとんどのシステムでは、root アカウントに 割り当てたパスワードが 1 つあります。まず最初にすべきことは、 このパスワードは .Em いつでも 危険に晒されていると仮定することです。 ここでは、root のパスワードを消すべきだと言っているのではありません。 パスワードは、マシンにコンソールからアクセスするのには、ほとんどいつでも 必要なものです。ここで言いたいのは、コンソール以外からは、おそらくは、 .Xr su 1 ユーティリティを用いてすらパスワードを使えるようにするべきではないと いうことです。 例えば、PTY が、 .Pa /etc/ttys ファイルで .Dq Li unsecure と指定されているかを確認してください。 そうすることで、 .Xr telnet 1 や .Xr rlogin 1 越しに root でログインできないようになります。 .Xr sshd 8 のような、別のログインサービスを使っている場合でも同様に、 直接 root へログインすることを許していないかどうか確認してください。 アクセスする手段、例えば .Xr ftp 1 のようなサービスが、たびたびクラックの手に落ちる ことを考えてみてください。root に直接ログインできるのは、システムコンソール を通したときのみにすべきです。 .Pp システム管理者として、自分は root になれるようにしておかねばならないの はもちろんですから、穴をいくつか空けておきます。しかし、それらの穴を 動作させるには、さらに追加のパスワード認証が必要であるようにして おきます。root でアクセス可能とする方法の一つとして、 適切なスタッフアカウントを ( .Pa /etc/group ) の .Dq Li wheel グループに加えることがあります。 .Li wheel グループに置かれたスタッフメンバには、 .Xr su 1 を使って root になることが許されます。パスワードエントリにおいて、 スタッフメンバを .Li wheel グループを置くことで、スタッフメンバに .Li wheel のアクセス権を与えてはいけません。スタッフメンバのアカウントは .Dq Li staff グループに置くべきです。そして .Pa /etc/group ファイルを通して .Li wheel グループに加えるべきです。 実際に root アクセスの必要な staff メンバのみ .Li wheel グループに置くように すべきです。Kerberos のような認証方法を使用する場合、root アカウントで .Pa .k5login ファイルを使って、誰も .Li wheel グループに置く必要なく root に .Xr ksu 1 を許すようにすることもできます。 このやり方はよりよい解決策なのかもしれません。なぜなら、 .Li wheel のメカニズム では、侵入者がパスワードファイルを手に入れ、staff アカウントのいずれか 1 つを破ることができると、root を破ることがまだできてしまうからです。 .Li wheel のメカニズムを用いる方が、何もしないよりは良いのですが、必ずしも 最も安全な選択肢とは限りません。 .Pp root アカウントの安全性を高める間接的な方法として、別のログインアクセス の方法を用いて、スタッフのアカウントの暗号化パスワードを\ * にして おくことで、スタッフのアカウントの安全性を高めるものがあります。この方法 だと、侵入者はパスワードファイルを盗むことができるかもしれませんが、 スタッフアカウントを破ることはできないでしょう。 また、たとえ root が暗号化パスワードをパスワードファイルに付けていたとしても、 root アカウントも破ることはできないでしょう (もちろん、コンソールへの root によるアクセスが限定されているものとします)。 スタッフメンバがスタッフアカウントでログインする際には、 .Xr kerberos 1 や .Xr ssh 1 のような、公開鍵 / 秘密鍵の鍵の組を使う 安全性の高いログインの仕組みを使います。Kerberos のような仕掛けを使う場合、 一般に、Kerberos サーバを実行するマシンと自分のデスクトップ ワークステーションとの安全性を確保しなければなりません。SSH で 公開鍵 / 秘密鍵の組を使う場合、一般に、ログイン .Em 元 マシン (通常は自分のワークステーション) の安全性を確保しなければなりません。ここで、 .Xr ssh-keygen 1 で公開鍵 / 秘密鍵の組を生成する際、鍵の組をパスワードで防御することにより、 鍵の組への防御層を追加することもできます。スタッフアカウントの パスワードを\ * で外すことができると、管理者自身が設定 した安全性の高い方法でしかスタッフメンバがログインできないことも保証 できます。こうして、多くの侵入者が使う重大なセキュリティの穴 (安全性の低い無関係なマシンからネットワークを覗き見る方法) を塞ぐようなセッションを提供する、安全性の高い暗号化されたコ ネクションを使うことを、スタッフメンバ全員に強制することができ るのです。 .Pp より間接的なセキュリティの仕組みでは、制限の強いサーバから制限の弱い サーバへログインすることを前提としています。例えば、メインマシンで、 様々な種類のサーバを実行させている場合、ワークステーションではそれらの サーバを実行させてはなりません。ワークステーションを十分に 安全にしておくためには、実行するサーバの数を、一つもサーバ が実行されていないというくらいにまでできる限り減らすべきです。 また、パスワードで保護されたスクリーンセーバを走らせておくべきです。 ワークステーションへの物理的アクセスが与えられたとすると、もちろん 言うまでもなく、攻撃者は管理者が設定したいかなる種類のセキュリティ をもうち破ることができるのです。これは、管理者として必ず考えておか ねばならない問題ですが、システム破りの大多数は、ネットワーク経由で リモートから、ワークステーションやサーバへの物理的アクセス手段を持 たない人々によって行われるという事実もまた、念頭に置いておく必要 があります。 .Pp Kerberos のような方法を使うことで、スタッフアカウントのパスワードの変更 もしくは停止を一箇所で行なうことと、スタッフメンバがアカウントを持つ すべてのマシンに即時にその効果を及ぼすことが可能となります。スタッフメンバの アカウントが危険に晒されたときに、すべてのマシンでスタッフメンバのパスワードを 即座に変更する能力を過小評価してはいけません。パスワードが分散されている状況では、 N 台のマシンでパスワードを変更すると、てんやわんやの事態を招く可能性が あります。Kerberos を使用すると、パスワードの再発行に制限 (re-passwording restriction) を課することもできます。この機能を使うことにより、 ある Kerberos チケットをしばらく経つとタイムアウトにすることが できるだけでなく、一定期間 (例えば、1 ヶ月に 1 回) 経つと、ユーザに新しいパスワードを選ぶように要求することもできます。 .Sh root の安全性を高める \(em root 権限のサーバと SUID/SGID バイナリ 用心深いシステム管理者は、自分に必要なサーバプロセスだけを過不足なく 実行させるものです。第三者製のサーバは、よくバグを持っていがちだと いうことに注意して下さい。例えば、古いバージョンの .Xr imapd 8 や .Xr popper 8 を実行させておくのは、全世界に共通の root の切符を与えてい るようなものです。 自分で注意深くチェックしていないサーバは、決して実行してはいけません。 root で実行させる必要のあるサーバはほとんどありません。 例えば、 .Xr talkd 8 , .Xr comsat 8 , .Xr fingerd 8 デーモンを、特別の「砂場 .Dq sandbox 」ユーザで実行させることができます。 .\"kuma hellofalot of trouble って何や? .\" hell of a lot of trouble みたいですね。;-) (金ん田 '99.02.11) 管理者が膨大な数の問題に直面していないのなら、この「砂場」は完璧では ありませんが、セキュリティに関するタマネギ的アプローチはここでも 成り立ちます。砂場で実行されているサーバプロセスを経由して侵入を 果たすことができたとしても、攻撃者はさらに砂場から外に脱出しなければ なりません。攻撃者が通過せねばならない層の数が増えれば増えるほど、 それだけ攻撃者が侵入に成功する確率が減ります。root の抜け穴は 歴史的に、基本システムサーバも含め、 root 権限で実行されるほとんどすべてのサーバプロセスで発見されています。 ユーザが .Xr sshd 8 経由でのみログインし、 .Xr telnetd 8 , .Xr rshd 8 , .Xr rlogind 8 経由でログインすることが決してないマシンを稼働させているのであれば、 それらのサービスを停止させて下さい。 .Pp .Fx では、今では .Xr talkd 8 , .Xr comsat 8 , .Xr fingerd 8 は砂場で実行させることが デフォルトになっています。次に砂場で実行させるべきプログラムの候補として、 .Xr named 8 があります。デフォルトの .Pa rc.conf ファイルには、 .Xr named 8 を砂場で実行する ために必要な引数がコメントアウトされた形式で含まれています。新しい システムをインストールしているか、それとも既存のシステムを アップグレードして使っているかに依存しますが、砂場として使用する 特別のユーザアカウントがインストールされていないかもしれません。 用心深いシステム管理者であれば、できるだけいつでも研究を怠らず、 サーバに砂場を仕込むものでしょう。 .Pp 通常、砂場で実行しないサーバが他にいくつかあります。 .Xr sendmail 8 , .Xr popper 8 , .Xr imapd 8 , .Xr ftpd 8 などです。これらのうちいくつかのサーバには代わりとなるも のがありますが、 代わりのものをインストールするには、それだけ多くの仕事が必要になるので、 結局これらを喜んで入れてしまいます (便利さという要素がまたも勝利を収めるわけです)。 -これらのサーバは、root 権限で実行せねばならいかもしれません。また、 +これらのサーバは、root 権限で実行せねばならないかもしれません。 +また、 これらのサーバ経由で生じる侵入 を検出するためには、他の仕組みに頼らなくてはならないかもしれません。 .Pp システムの root 権限の潜在的な穴で他に大きなものとして、システムに インストールされた SUID-root/SGID バイナリがあります。 これらのバイナリは、 .Xr rlogin 1 のように、 .Pa /bin , /sbin , /usr/bin , /usr/sbin に存在するものがほとんどです。 100% 安全なものは存在しないとはいえ、システムデフォルトの SUID/SGID バイナリは比較的安全といえます。それでもなお、root の穴が これらのバイナリにときおり発見されています。1998 年に Xlib で見つかった root の穴は、 .Xr xterm 1 (普通、SUID 設定されています) を攻撃可能にしていました。 安全である方がよいので、用心深いシステム管理者は残念に思いながらも、 スタッフのみが実行する必要がある SUID バイナリは、スタッフのみが アクセス可能な特別なグループに含めるように制限を加え、 誰も使わない SUID バイナリは .Pq Dq Li "chmod 000" を実行して片付けてしまうでしょう。 ディスプレイを持たないサーバは、一般的に .Xr xterm 1 のバイナリを必要としません。 SGID バイナリもほとんど同様の危険な存在になり得ます。 侵入者が kmem に SGID されたバイナリを破ることができた場合、 その侵入者は .Pa /dev/kmem を読み出すことができるようになります。 つまり、暗号化されたパスワードファイルを読み出すことができる ようになるので、パスワードを持つどのアカウントをも、 .Pq 潜在的な 危険に晒すことになります。 代わりに、 .Dq Li kmem グループを破った侵入者が PTY を通して送られたキーストロークを 監視できます。キーストロークには、安全な方法でログインするユーザが使っている PTY も含まれます。 .Dq Li tty グループを破った侵入者は、ほぼ任意のユーザの TTY へ 書き込みができます。ユーザが端末プログラムやキーボードをシミュレーション する機能を持ったエミュレータを使っている場合、侵入者は潜在的に、 結局そのユーザとして実行されるコマンドをユーザの端末にエコーさせる データストリームを生成できる可能性があります。 .Sh ユーザアカウントの安全性を高める ユーザアカウントは、普通、安全性を高めることが最も困難です。 スタッフに対して、アテナイのドラコのような厳格なアクセス制限を課し、 スタッフのパスワードを\ * で外すことができるとはいえ、管理者が持ちうる 一般ユーザすべてのアカウントに対して同じことはできないかもしれません。 管理者が十分に統率をとることができるなら、管理者は勝利し、ユーザの アカウントの安全を適切に確保できるかもしれません。それが できないならば、よりいっそう気を配って一般ユーザのアカウントを 監視するよりほかありません。一般ユーザアカウントに対し SSH や Kerberos を利用することには、システム管理がさらに増えたり テクニカルサポートが必要になるなどの問題があります。 それでも、暗号化パスワードファイルと比較するとはるかに良い解です。 .Sh パスワードファイルの安全性を高める できるだけ多くのパスワードを\ * で外し、それらのアカウントのアクセスには SSH や Kerberos を使うようにすることが、唯一の確実な方法です。たとえ暗号化 パスワードファイル .Pq Pa /etc/spwd.db が root でのみ読み出し可能だとしても、 侵入者がそのファイルの読み出しアクセス権限を得ることは可能かもしれません。 たとえ root の書き込み権限が得られないにしてもです。 .Pp セキュリティスクリプトは常にパスワードファイルの変更をチェックし、報告 するようにすべきです (後述の .Sx 「ファイルの完全性のチェック」 を参照して下さい)。 .Sh カーネルのコア、raw デバイス、ファイルシステムの安全性を高める root の権限を破ると、攻撃者は何でもできますが、 もっと簡便なこともいくつかあります。例えば、最近のカーネルは、 組み込みのパケット覗き見デバイス .Pq packet sniffing device ドライバを備えているものがほとんどです。 .Fx では .Xr bpf 4 デバイスと呼ばれています。侵入者は普通、危険に晒された マシンでパケット覗き見プログラムを実行させようと試みます。侵入者に わざわざそういう機能を提供する必要はないので、ほとんどのシステムで .Xr bpf 4 デバイスを組み込むべきではありません。 .Pp .Xr bpf 4 デバイスを外し、モジュールローダを無効にしても、 .Pa /dev/mem と .Pa /dev/kmem という悩みの種がまだ残っています。この問題に関しては、侵入者は raw デバイスに書き込むこともできます。 また、 .Xr kldload 8 という、別のカーネル機能があります。 やる気まんまんの侵入者は、KLD モジュールを使って 自分独自の .Xr bpf 4 もしくはその他覗き見デバイスを動作中のカーネルに インストールすることができます。 この問題を避けるため、システム管理者は カーネルをより高い安全レベル .Pq securelevel 、少なくとも安全レベル 1 で実行させる必要があります。 .Xr sysctl 8 を使って .Va kern.securelevel 変数に安全レベルを設定することが できます。ひとたび安全レベルに 1 を設定すると、 raw デバイスに対する書き込みアクセスは拒否され、例えば .Cm schg のような特別な .Xr chflags 1 フラグが効果を発揮します。これに加えて、 起動時において重要なバイナリ・ディレクトリ・スクリプトファイルなど、 安全レベルが設定されるまでの間に実行されるものすべてに対しても .Cm schg フラグを確実に on にしておく必要があります。この設定をやり過ぎても 構いませんが、より高い安全レベルで動作している場合、システムの アップグレードがはるかに困難になります。システムをより高い安全レベルで 実行させるようにするが、お天道さまの下にあるすべてのシステムファイルと ディレクトリに .Cm schg フラグを設定しないという妥協をする方法もあります。 もう一つの可能性としては、単純に .Pa / と .Pa /usr を読み込み専用でマウント することです。ここで特筆すべきことは、システムを守ろうとしてアテナイのドラコ のように厳しくしすぎると、侵入を検出するという非常に重要なことが できなくなってしまうということです。 .Sh ファイルの完全性のチェック: バイナリ、設定ファイルなど ことこの問題に至ると、システム管理者にできることは、 便利さという要素がその醜い頭を上げない程度に、 コアシステムの設定 / 制御ファイルを防御することだけです。 例えば、 .Pa / と .Pa /usr にある大部分のファイルに .Cm schg ビットを設定するために .Xr chflags 1 を使用するのは、おそらく逆効果でしょう。 なぜなら、そうすることでファイルは保護できますが、侵入を検出 する窓を閉ざしてしまうことにもなるからです。 セキュリティのタマネギの最後の層はおそらく最も重要なもの、すなわち検出です。 セキュリティの残りのものは、突然の侵入を検出できなければ、全然有用では ありません( あるいは、もっと悪ければ、間違った安全性に対する感覚を 植え付けてしまいます )。 タマネギの仕事の半分は、攻撃者を食い止めるのではなく、侵入を遅らせることにより、 攻撃中の攻撃者を捕まえる機会を検出層に与えることなのです。 .Pp 侵入を検出する最も良い方法は、変更されていたり、消えていたり、入れた覚えが ないのに入っているファイルを探すことです。 変更されたファイルを探すのに最も良い方法は、もう一つの ( しばしば中央に集められた ) アクセスが制限されたシステムから行なうものです。 さらに安全でアクセス制限されたシステム上でセキュリティ用スクリプトを書けば、 スクリプトは潜在的な攻撃者達からはほぼ見えなくなります。 これは重要なことです。 最大限に優位に立つために、一般的にビジネスで使う他のマシンへの重要な アクセスは、アクセスの制限されたマシンにやらせなくてはいけません。 普通は、他のマシンからアクセス制限されたマシンへ読み込み専用で NFS エクスポートしたり、アクセス制限されたマシンから他のマシンへ SSH を行なうために、SSH 鍵のペアを作ったりすることで行います。 ネットワークのトラフィックを別にして、NFS は最も可視性のない方法です。 事実上検出されない各クライアント上のファイルシステムを監視できるようになります。 アクセス制限されたサーバがスイッチを通してクライアントに接続する場合、 たいてい NFS がより良い選択肢です。アクセス制限されたサーバがハブを通したり、 いくつかのルーティング層を通したりしてクライアントに接続する場合、 NFS はあまりにも危険な方法かもしれず ( ネットワークの面で )、SSH の方が 認証の道筋は跡となって残りますが、それでもより良い方法かもしれません。 .Pp アクセス制限されたマシンに、少なくとも監視することを前提とした クライアントシステムへの読み込みアクセスをひとたび与えると、 実際に監視するためのスクリプトを書かなくてはいけません。 NFS マウントをすれば、 .Xr find 1 や .Xr md5 1 などの単純なシステムユーティリティでスクリプトを書くことができます。 少なくとも 1 日 1 回、クライアントのファイルを直接 .Xr md5 1 にかけ、さらにもっと頻繁に .Pa /etc および .Pa /usr/local/etc にあるようなコントロール用ファイルを試験するのが一番です。 試験ファイルは、アクセス制限されたマシンが適性であると知っている、基となる MD5 情報と比べて違いが見つかった場合、システム管理者に調べて欲しいと 訴えるようにするべきです。 優れたセキュリティ用スクリプトは、 .Pa / および .Pa /usr などのシステムパーティション上で不適当に SUID されたバイナリや、 新たに作成されたファイルや削除されたファイルもチェックするのでしょう。 .Pp NFS ではなく、SSH を使用する場合は、セキュリティ用スクリプトを書くのはずっと 難しいことです。スクリプトをクライアントから見えるようにし、 動かすためには、クライアントに対して .Xr scp 1 を必ず行わなくてはいけません。 そして、安全のため、スクリプトが使うバイナリ ( .Xr find 1 など ) を .Xr scp 1 する必要もあります。クライアントの .Xr sshd 8 デーモンはすでに危険に晒されているかもしれません。 以上のことから、安全でないリンク上の場合は SSH は必要かもしれませんが、 SSH を扱うのはとても大変なことです。 .Pp 優れたセキュリティ用スクリプトは、ユーザやスタッフメンバの アクセス設定ファイルもチェックするものです。 .Pa .rhosts , .shosts , .ssh/authorized_keys などがそれですが、MD5 のチェックの範囲外になってしまうかもしれません。 .Pp ユーザ用のディスク容量が非常に大きい場合は、パーティション上の各ファイルを 見て回るのに大変な時間がかかるかもしれません。この場合は、マウントフラグを 設定して、このパーティションに SUID されたバイナリやデバイスを置けないように するのが良い考えです。 .Cm nodev および .Cm nosuid オプション ( .Xr mount 8 参照) が調べたいものでしょう。私なら、ともかくも週に 1 度はファイルシステムを スキャンするでしょう。なぜなら、この層での目的は、侵入が意味があるかどうかに 関わらず、侵入を検出することだからです。 .Pp プロセスアカウンティング ( .Xr accton 8 参照) は、比較的オーバヘッドの低いオペレーティングシステムの機能で、 マシンに侵入されてしまった後の評価の仕組みとして使用することをお勧め します。 侵入を受けた後でも当該ファイルが無傷である場合に、 侵入者が実際にどのようにしてシステムに侵入したかを 追跡するのに特に有益です。 .Pp 最後に、セキュリティスクリプトはログファイルを処理するようにし、 ログファイル自体もできるだけ安全性の高い方法で .Sq リモート syslog は極めて有益になり得ます 生成するようにすべきです。侵入者は自分の侵入の痕跡を覆い隠そう としますし、また、ログファイルはシステム管理者が最初の侵入の時 刻と方法を追跡してゆくために極めて重要です。 ログファイルを永久に残しておくための 1 つの方法は、システムコンソールを シリアルポートにつないで走らせ、コンソールを監視している安全なマシンを通して 絶えず情報を集めることです。 .Sh 偏執狂的方法 多少偏執狂的になっても決して悪いことにはなりません。原則的に、 システム管理者は、便利さに影響を与えない範囲でいくつでもセキュリティ 機能を追加することができます。また、いくらか考慮した結果、便利さに 影響を与えるセキュリティ機能を追加することもできます。 もっと重要なことは、セキュリティ管理者は少々ごちゃごちゃに すべきだということです。 というのも、このマニュアルページに書かれている勧告をそのまま使用した場合は、 予想される攻撃者はやはりこのマニュアルを読んでいるわけですから、 防御策を漏らしてしまうことになるからです。 .Sh サービス不能攻撃 (DoS attack) についての特記事項 このセクションではサービス不能攻撃を扱います。サービス不能攻撃は、普通は、 パケット攻撃です。ネットワークを飽和させる最先端の偽造パケット .Pq spoofed packet 攻撃に対してシステム管理者が打てる手はそれほど多く ありませんが、一般的に、その種の攻撃によってサーバがダウン しないことを確実にすることで、被害をある限度に食い止める ことはできます。 .Bl -enum -offset indent .It サーバの fork の制限 .It 踏み台攻撃の制限 .Pq ICMP 応答攻撃、ping broadcast など .It カーネルの経路情報のキャッシュ .El .Pp 普通に見られるサービス不能攻撃に、fork するサーバプロセスに対する ものがあります。これは、サーバにプロセス・ファイル記述子・メモリを 食い尽くさせて、マシンを殺そうとするものです。 .Xr inetd 8 サーバには、この種の攻撃を制限するオプションがいくつかあります。マシンが ダウンすることを防止することは可能ですが、この種の攻撃によりサービスが 崩壊することを防止することは一般的に言ってできないことに注意する必要が あります。 .Xr inetd 8 のマニュアルページを注意深く読んで下さい。特に、 .Fl c , C , R オプションに注意して下さい。IP 偽造攻撃 (spoofed-IP attack) は .Xr inetd 8 の .Fl C オプションの裏をかけるので、一般にオプションを 組み合わせて使用するべきであることに注意して下さい。スタンドアロンサーバ の中には、自分自身で fork を制限するパラメータを持っているものがあります。 .Pp .Xr sendmail 8 デーモンには、 .Fl OMaxDaemonChildren オプションがあります。負荷には遅れがあるので、 .Xr sendmail 8 の負荷に限界を設けるオプションを使うよりも、 このオプションを使う方がまともに動作する可能性ははるかに高いです。 sendmail の実行を開始する際に、 .Va MaxDaemonChildren パラメータを設定するべきです。その値は、 通常見込まれる負荷を扱える程度に十分高いが、 それだけの数の .Xr sendmail 8 を操作しようとすると マシンが卒倒してしまうほどには高くないような値に設定するべきです。 +.\" 翻訳の抜けがあるようだ .Xr sendmail 8 -をキュー処理モード +を +.Dq キュー処理 +モード .Pq Fl ODeliveryMode=queued で実行することや、デーモン .Pq Dq Nm sendmail Fl bd をキュー処理用プロセス .Pq Dq Nm sendmail Fl q15m と別に実行することも、用心深いことと言えます。それでもなおリアルタイムでの 配送を望むのであれば、 .Fl q1m のようにすることで、キュー処理をはるかに短い時間間隔で 行うことができます。いずれにしても、 .Va MaxDaemonChildren オプションに合理的な値を確実に指定して、 .Xr sendmail 8 がなだれをうって失敗することがないようにして下さい。 .Pp .Xr syslogd 8 デーモンは直接攻撃される可能性があるので、可能ならばいつでも .Fl s オプションを用いることを強く推奨します。これができないなら、 .Fl a オプションを使って下さい。 .Pp tcpwrapper の逆 identd などの接続返し (connect-back) を行うサービスに ついては十分注意を払うようにするべきです。これらは直接攻撃を受ける可能性が あります。こういう事情があるので、tcpwrapper の逆 ident 機能を使おうとは 思わないのが一般的です。 .Pp 境界ルータのところでファイアウォールを設けて、外部からのアクセスに対して 内部サービスを防御するという考えは実によいものです。この考えは、LAN の外部 からの飽和攻撃を防ぐことにあり、root ネットワークベースの root 権限への攻撃から内部サービスを防御することには、あまり考慮を払って いません。ファイアウォールは常に排他的に設定して下さい。つまり、 +.\" .So 「ポート A, B, C, D と M から Z まで .Em 以外 -のすべてにファイアウォールを設ける」というふうにです。 +のすべてにファイアウォールを設ける」 +.\" .Sc +というふうにです。 このようにすることで、 .Xr named 8 (ゾーンのプライマリである場合), .Xr talkd 8 , .Xr sendmail 8 など、インターネットにアクセスを提供するサービス として特に指定するもの以外の、小さい番号のポートすべてをファイアウォールで 防御することができます。ファイアウォールをこの他のやり方、つまり 包含的もしくは受容的なファイアウォールとして設定しようとする場合、 .Dq close することを忘れてしまうサービスがいくつか出てきたり、新しい内部サービスを 追加したのにファイアウォールの更新を忘れたりする可能性がよく出てきます。 ファイアウォール上の大きい番号のポートを開けておいて、小さい番号のポートを 危険に晒すことなく受容的な動作を許すことができます。 .Fx では、 .Va net.inet.ip.portrange への sysctl .Pq Dq Li "sysctl net.inet.ip.portrange" , をいろいろ使用することで、 動的バインドに使用されるポート番号の範囲を制御できることを記憶にとどめて おいて下さい。これによりファイアウォールの設定の複雑性を緩和できます。 私は、ファイアウォールに通常のfirst/last の範囲として、 4000 から 5000 を、 高位ポートの範囲として、49152 から 65535 を使用しています。そして、 (いくつかのインターネットアクセス可能なポートを ブロックから除外するのはもちろんですが) 4000 より下のすべてをブロックしています。 .Pp また別のありふれたサービス不能攻撃として、踏み台攻撃 (springboard attack) と呼ばれるものがあります。これは、サーバが自分自身、ローカルネットワーク、 そして他のマシンを過負荷に追い込むような応答を生成させる方法でサーバを 攻撃します。この種の攻撃の中で最もありふれたものは、ICMP PING BROADCAST 攻撃があります。攻撃者は、実際に攻撃したいマシンのアドレスをソース アドレスに設定した ping パケットを偽造して、対象の LAN の ブロードキャストアドレスに向けてパケットを送信します。境界にあるルータが ブロードキャストアドレスに対する ping パケットを握り潰すように設定されていない 場合、LANは、詐称されたソースアドレスに向けて応答パケットを生成するはめになり、犠牲となるマシンが飽和するところまで行ってしまいます。攻撃者が同じトリックを 異なるネットワーク上のいくつものブロードキャスト アドレスに対して同時に使用した場合、とくにひどいことになります。 これまでに、120 メガビット以上のブロードキャスト攻撃が観測されています。 2 番目の踏み台攻撃は、ICMP エラー報告の仕掛けを狙うものです。ICMP エラー 応答を生成するパケットを生成することにより、攻撃者はサーバの 受信ネットワークを飽和させることができ、同時に、サーバが送信 ネットワークを ICMP 応答で飽和させるようにすることができます。 .Vt mbuf を消費し尽くさせることにより、この種の攻撃でサーバを クラッシュさせることも可能です。サーバの ICMP 応答生成が速過ぎて、 ICMP 応答の送信が追い付かない場合、とくにひどいことになります。 .Fx カーネルには、この種の攻撃の効果を抑制する .Dv ICMP_BANDLIM と呼ばれる新しいコンパイルオプションがあります。 3つめの主要なクラスに属す踏み台攻撃は、UDP echo サービスのような、 ある種の内部 .Xr inetd 8 サービスに関連するものです。攻撃者は、単に ソースアドレスがサーバ A の echo ポートであり、ディスティネーション アドレスがサーバ B の echo ポートであるかのように UDP パケットを 偽造します。ここでサーバ A, B はともに自分の LAN に接続されています。 この 2 つのサーバは、この一つのパケットを両者の間で互いに相手に対して 打ち返しあいます。このようにしてパケットをいくつか注入するだけで、 攻撃者は両方のサーバと LAN を過負荷状態にすることができます。 同様の問題が内部 chargen ポートにも存在します。有能なシステム管理者は この手の .Xr inetd 8 内部テストサービスのすべてを無効にしておくものです。 .Pp 偽造パケット攻撃は、カーネルの経路情報キャッシュに過負荷を生じさせるために 用いられることもあります。 .Va net.inet.ip.rtexpire , net.inet.ip.rtminexpire , net.inet.ip.rtmaxcache の .Xr sysctl 8 パラメータを参照して下さい。でたらめなソース IP を用いた この偽造パケット攻撃により、カーネルは、一時的なキャッシュ経路を 経路情報テーブルに生成します。これは .Dq Li "netstat -rna | fgrep W3" . で見ることができます。これらの経路は、普通は 1600 秒程度でタイムアウトに なります。カーネルがキャッシュ経路テーブルが大きくなり過ぎたことを 検知すると、カーネルは動的に .Va rtexpire を減らしますが、 .Va rtminexpire より小さくなるようには決して減らしません。ここに問題が 2 つあります。 (1) 負荷の軽いサーバが突然攻撃された場合、カーネルが十分素早く反応 できないこと。(2) カーネルが攻撃に耐え生き延びられるほど十分 .Va rtminexpire が低く設定されていないこと。の 2 つです。 自分のサーバが T3 もしくはそれより 良質の回線でインターネットに接続されている場合、 .Xr sysctl 8 を用いて .Va rtexpire と .Va rtminexpire とを手動で上書きしておくことが思慮深いこと といえます。 (自分のマシンをクラッシュさせたくないのであれば :-)) どちらか一方でも 0 に は決してしないで下さい。両パラメータを 2 秒に設定すれば、 攻撃から経路情報テーブルを守るには十分でしょう。 .Sh Kerberos および SSH を用いたアクセスの問題 もしあなたが、Kerberos および SSH を使用したいのだとしたら、両者に関して 言っておく必要のある問題がいくつかあります。 Kerberos5 は大変優れた認証プロトコルですが、kerberos 化された .Xr telnet 1 や .Xr rlogin 1 は、バイナリストリームを扱うのに不向きになってしまうようなバグがあります。 さらに、デフォルトでは、Kerberos は .Fl x オプションを使わない限りセッションを暗号化してくれません。 SSH では、デフォルトですべてを暗号化してくれます。 .Pp SSH はあらゆる場面でとても良く働いてくれます。ただし、 暗号鍵を送ってしまう場合を除けばです。これはつまり、暗号鍵を持った安全な ワークステーションがあって、この暗号鍵で残りのシステムとアクセスできる ようになっている場合では、安全でないマシンへ .Xr ssh 1 を行なう時に暗号鍵が 見えてしまうということです。実際の鍵そのものが見えてしまうわけでは ありませんが、 .Xr ssh 1 は、login している間、配送用ポートを作ります。 攻撃者が安全でないマシンの root を破ると、攻撃者は、 このポートを使って暗号鍵を取得し、暗号鍵でロックの外れる他のマシンへの アクセスを得ます。 .Pp staff のログインには、Kerberos を組み合せた SSH を使用することを勧めます。 SSH は、Kerberos と一緒にコンパイルできます。こうすると、見えて しまうかもしれない SSH 鍵をあまりあてにしないで良いようになります。 また、それと同時に、Kerberos 経由でパスワードを保護することもできます。 SSH 鍵は、安全なマシンからの自動化されたタスク (Kerberos では不向きな ものなど ) 用のみに使用するべきです。また、SSH の設定で SSH 鍵を送らないようにするか、あるいは、 .Pa authorized_keys ファイル中で .Va from Ns = Ns Ar IP/DOMAIN オプションを使用して、特定のマシンからログインしてきたもののみに 有効になる鍵を SSH が生成できるようにすることも勧めます。 .Sh 関連項目 .Xr chflags 1 , .Xr find 1 , .Xr md5 1 , .Xr netstat 1 , .Xr openssl 1 , .Xr ssh 1 , .Xr xdm 1 , .Xr group 5 , .Xr ttys 5 , .Xr accton 8 , .Xr init 8 , .Xr sshd 8 , .Xr sysctl 8 , .Xr syslogd 8 , .Xr vipw 8 .Sh 歴史 .Nm マニュアルページは、もともと .An Matthew Dillon -によって書かれました。 -最初に現れたのは、 +によって書かれ、 +1998 年 12 月に .Fx 3.1 -で 1998 年 12 月のことです。 +ではじめて登場しました。 .\" translated by Norihiro Kumagai, 98-12-29 diff --git a/ja_JP.eucJP/man/man7/symlink.7 b/ja_JP.eucJP/man/man7/symlink.7 index cabf360d60..ee7041242d 100644 --- a/ja_JP.eucJP/man/man7/symlink.7 +++ b/ja_JP.eucJP/man/man7/symlink.7 @@ -1,444 +1,448 @@ .\" Copyright (c) 1992, 1993, 1994 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)symlink.7 8.3 (Berkeley) 3/31/94 .\" %FreeBSD: src/bin/ln/symlink.7,v 1.28 2004/07/02 21:04:18 ru Exp % .\" .\" $FreeBSD$ .\" .\" WORD: dereference 手繰る .\" WORD: traverse たどる .Dd March 31, 1994 .Dt SYMLINK 7 .Os .Sh 名称 .Nm symlink .Nd シンボリックリンクの扱い .Sh シンボリックリンクの扱い シンボリックリンクは、他のファイルへのポインタとして働くファイルです。 動作を理解するためには、ハードリンクの動作を理解する必要があります。 ファイルへのハードリンクは元のファイルとは区別できません。 なぜなら、ハードリンクは元のファイル名の下敷きとなるオブジェクトを 参照するからです。 ファイルに対する変更は、ファイルを参照するために使用する名前には依存しません。 ハードリンクは、ディレクトリを参照してはなりませんし、 他のファイルシステム上のファイルを参照してもなりません。 シンボリックリンクは、リンクされたファイルの名前を格納します。 すなわち、他の名前へのポインタです。 下敷きとなるオブジェクトを参照するわけではありません。 このため、シンボリックリンクは、ディレクトリを参照することができますし、 ファイルシステムをまたがることが可能です。 .Pp シンボリックリンクとこれが参照するオブジェクトは ファイルシステムの名前空間において共存しますので、 リンク自身と参照されるオブジェクトの区別に関して混乱が生じることがあります。 歴史的には、コマンドおよびシステムコールは、 場当たり的にそれぞれ独自のリンク追跡規則を採用してきました。 このシステムに実装されている、統一的なアプローチの規則をここに示します。 ユーザインタフェースをできる限り一貫性あるものとするために、 ローカルアプリケーションもまたこの規則を守ることが重要です。 .Pp シンボリックリンクの操作は、リンク自身への操作、 もしくはリンクによって参照されるオブジェクトへの操作によって実現されます。 後者の場合、アプリケーションまたはシステムコールがリンクを .Dq 追跡 (follow) したと言います。 シンボリックリンクは他のシンボリックリンクを参照することができます。 この場合、シンボリックリンクではないオブジェクトが見付かるか、 存在しないファイルを参照するシンボリックリンクが見付かるか、 ループが検出されるまで、 リンクが手繰られます。 (ループ検出は、追跡可能なリンク数の上限を設定することにより実現されます。 この制限を超過する場合にはエラーとなります。) .Pp 議論すべき領域で異なるものが 3 つあります。それらは次の通りです: .Pp .Bl -enum -compact -offset indent .It システムコールのファイル名引数として使用されるシンボリックリンク。 .It ファイルツリーをたどらないユーティリティの コマンドライン引数として指定されるシンボリックリンク。 .It ファイルツリーをたどる (traverse) ユーティリティが扱うシンボリックリンク (コマンドラインで指定されるもの、 およびファイル階層をたどるときに出会うものの両方です)。 .El .Ss システムコール 最初の領域は、 システムコールのファイル名引数として使用されるシンボリックリンクです。 .Pp 次の例外を除き、全システムコールはシンボリックリンクを追跡します。 例えば、 .Dq Li afile という名前のファイルを指すシンボリックリンク .Dq Li slink が存在する場合、システムコール .Dq Li open("slink" ...\&) はファイル .Dq afile のファイル記述子を返します。 .Pp リンクを追跡せずに、シンボリックリンク自身を操作するシステムコールが 9 つあります。 それらは次の通りです: .Xr lchflags 2 , .Xr lchmod 2 , .Xr lchown 2 , .Xr lstat 2 , .Xr lutimes 2 , .Xr readlink 2 , .Xr rename 2 , .Xr rmdir 2 , .Xr unlink 2 。 .Xr remove 3 は .Xr unlink 2 の別名ですから、これもまたシンボリックリンクを追跡しません。 .Xr rmdir 2 は、シンボリックリンクに対して適用されると、エラー .Er ENOTDIR で失敗します。 .Pp 既存のシンボリックリンクの所有者およびグループの変更は、 .Xr lchown 2 システムコールにて可能です。 既存のシンボリックリンクの フラグ・アクセスパーミッション・所有者/グループ・修正時刻は、それぞれ .Xr lchflags 2 , .Xr lchmod 2 , .Xr lchown 2 , .Xr lutimes 2 システムコールで変更可能です。 これらのうち、システムが使用するのはフラグのみであり、 アクセスパーミッションと所有者情報は無視されます。 .Pp .Bx 4.4 -システムは歴史的な 4BSD システムとは異なり、システムコール +システムは歴史的な +.Bx 4 +システムとは異なり、システムコール .Xr chown 2 がシンボリックリンクを追跡するように変更されました。 後になって、新しい .Xr chown 2 の制限が明らかになると、 .Xr lchown 2 システムコールが追加されました。 .Ss ファイルツリーをたどらないコマンド 第 2 の領域は、 ファイルツリーをたどらないコマンドに対する コマンドラインのファイル名引数として指定されるシンボリックリンクです。 .Pp 下に述べる例外を除き、コマンドは、 コマンドライン引数として指定されるシンボリックリンクを追跡します。 例えば、 .Dq Li afile という名前のファイルを指すシンボリックリンク .Dq Li slink が存在する場合、コマンド .Dq Li cat slink はファイル -.Dq afile +.Dq Li afile の内容を表示します。 .Pp この規則は、ファイルツリーをたどることもできるコマンドも含みます。 これを認識することが重要です。 例えば、コマンド .Dq Li "chown file" はこの規則に含まれますが、コマンド .Dq Li "chown -R file" は含まれません。 (後者は第 3 の領域で後述します。) .Pp コマンドがシンボリックリンクを追跡するのではなく シンボリックリンク自身を操作する ことが明示的に意図されている場合、 例えば .Dq Li "chown slink" が、シンボリックリンクであるか否かにかかわらず、 .Dq Li slink 自身の所有者を変更したい場合、 .Fl h オプションを使用します。 先の例では、 .Dq Li "chown root slink" は .Dq Li slink が参照するファイルの所有者を変更しますが、 .Dq Li "chown -h root slink" は .Dq Li slink 自身の所有者を変更します。 .Pp この規則には 4 つの例外があります。 .Xr mv 1 および .Xr rm 1 のコマンドは、引数として指定されるシンボリックリンクを追跡せずに、 それぞれシンボリックリンク自身を改名したり削除しようとします。 (シンボリックリンクがファイルを相対パスで指定する場合、 シンボリックリンクを他のディレクトリに移動してしまうと、 パスが正しくなくなってしまいますので、 追跡できなくなります。) .Pp .Xr ls 1 コマンドもまたこの規則の例外です。 歴史的なシステムとの互換性のために ( .Nm ls がツリーをたどらない場合、すなわち .Fl R オプションが指定されない場合)、 .Fl H , .Fl L オプションが指定されるか .Fl F , .Fl d , .Fl l オプションが指定されない場合、 .Nm ls コマンドは引数として指定されたシンボリックリンクを追跡します。( ファイルツリーをたどらない場合にも、 .Fl H , .Fl L オプションが動作に影響を与えるコマンドは .Nm ls だけです。) .Pp .Xr file 1 コマンドもまたこの規則の例外です。 .Xr file 1 コマンドは、引数として指定されるシンボリックリンクを、 デフォルトでは追跡しません。 .Fl L オプションが指定されると、 .Xr file 1 コマンドは引数として指定されるシンボリックリンクを追跡します。 .Pp .Bx 4.4 -システムは歴史的な 4BSD システムとは異なり、 +システムは歴史的な +.Bx 4 +システムとは異なり、 .Nm chown , .Nm chgrp のコマンドがコマンドラインに指定されたシンボリックリンクを追跡します。 .Ss ファイルツリーをたどるコマンド 次のコマンドは、オプションとしてまたは常にファイルツリーをたどります: .Xr chflags 1 , .Xr chgrp 1 , .Xr chmod 1 , .Xr cp 1 , .Xr du 1 , .Xr find 1 , .Xr ls 1 , .Xr pax 1 , .Xr rm 1 , .Xr tar 1 , .Xr chown 8 。 .Pp ファイルシステムをたどるときに出会うシンボリックリンクおよび コマンドライン引数として指定されるシンボリックリンクに対し、 次の規則が等しく適用されることを認識することが重要です。 .Pp 最初の規則は、 ディレクトリ型ではない ファイルを参照するシンボリックリンクに対して適用されます。 シンボリックリンクに対して適用される操作は、 リンク自身に対してなされますが、 そうでない場合にはリンクは無視されます。 .Pp コマンド .Dq Li "rm -r slink directory" は .Dq Li slink を削除し、 .Dq Li directory のツリーをたどるときに出会うシンボリックリンクもまた削除します。 なぜなら、シンボリックリンクは削除可能であるためです。 いかなる場合も、 .Dq Li slink が参照するファイルに .Nm rm が影響することはありません。 .Pp 第 2 の規則は、 タイプがディレクトリであるファイルを参照するシンボリックリンクに適用されます。 デフォルトでは、 タイプがディレクトリであるファイルを参照するシンボリックリンクは .Dq 追跡 されません。 これはしばしば .Dq 物理 探索と呼ばれ、 .Dq 論理 探索 (ディレクトリを参照するシンボリックリンクが追跡される場合です) の対極に位置します。 .Pp 可能な限り一貫性を持たせるため、 シンボリックリンクが参照するファイルのタイプに依存せずに、 ファイルツリーをたどるコマンドに コマンドラインで指定されるシンボリックリンクを追跡させるためには、 .Fl H .Pf ( Dq 半論理 ) フラグを指定します。 このフラグは、 コマンドラインの名前空間を論理的な名前空間とすることを意図しています。 (注: 常にファイルツリーをたどるわけではないコマンドにおいては、 .Fl R フラグも指定されていない場合には、 .Fl H フラグは無視されます。) .Pp 例えば、コマンド .Dq Li "chown -HR user slink" は、 .Dq Li slink で指されるファイルを根とするファイル階層をたどります。 注: .Fl H は、以前議論した .Fl h フラグとは同じではありません。 .Fl H フラグは、 実行される操作およびファイルツリーをたどるときの両方において、 コマンドラインで指定されるシンボリックリンクを手繰るようにします。 これにより、シンボリックリンクが指すファイルの名前を、 ユーザが指定したかのようになります。 .Pp 可能な限り一貫性を持たせるため、 シンボリックリンクが参照するファイルのタイプに依存せずに、 ファイルツリーをたどるコマンドに コマンドラインで指定されるシンボリックリンクだけでなく ファイルツリーをたどっているときに出会うシンボリックリンクも 追跡させるためには、 .Fl L .Pf ( Dq 論理 ) フラグを指定します。 このフラグは、 すべての名前空間を論理的な名前空間とすることを意図しています。 (注: 常にファイルツリーをたどるわけではないコマンドにおいては、 .Fl R フラグも指定されていない場合には、 .Fl L フラグは無視されます。) .Pp 例えば、コマンド .Dq Li "chown -LR user slink" は、 .Dq Li slink で指されるファイルの所有者を変更します。 .Dq Li slink がディレクトリを参照する場合、 .Nm chown は .Dq Li slink で指されるディレクトリを根とするファイル階層をたどります。 さらに、 .Nm chown がたどるファイルツリーの中でシンボリックリンクに出会うと、 そのシンボリックリンクは .Dq Li slink と同じ方法で扱われます。 .Pp 可能な限り一貫性を持たせるため、 デフォルトの動作を指定するには、 .Fl P .Pf ( Dq 物理 ) フラグを指定します。 このフラグは、 名前空間全体を物理的な名前空間のように見せるためのものです。 .Pp デフォルトでファイルツリーをたどらないコマンドにおいては、 .Fl R もまた指定しない場合には、 .Fl H , .Fl L , .Fl P フラグは無視されます。 また、 .Fl H , .Fl L , .Fl P オプションは複数回指定可能です。 この場合、最後に指定したものがコマンドの動作を指定します。 ある動作を行うようにコマンドをエイリアスし、 それをコマンドラインで上書きできるようにすることを意図しています。 .Pp .Xr ls 1 と .Xr rm 1 のコマンドは、これらの規則において例外を持ちます。 .Nm rm コマンドはシンボリックリンクを操作し、 シンボリックリンクが参照するファイルを操作しません。 また、シンボリックリンクを追跡しません。 .Nm rm コマンドは .Fl H , .Fl L , .Fl P のオプションをサポートしません。 .Pp 歴史的なシステムとの互換性を維持するために、 .Nm ls コマンドは少し異なる挙動を示します。 -.Fl F, -.Fl d, +.Fl F , +.Fl d , .Fl l オプションのいずれも指定しない場合、 .Nm ls コマンドは、コマンド行で指定したシンボリックリンクを追跡します。 .Fl L フラグが指定されると、シンボリックリンクのタイプにかかわらず、 またコマンドラインで指定されたのかファイルツリーをたどる途中に 出会ったのにかもかかわらず、 .Nm ls は全シンボリックリンクを追跡します。 .Sh 関連項目 .Xr chflags 1 , .Xr chgrp 1 , .Xr chmod 1 , .Xr cp 1 , .Xr du 1 , .Xr find 1 , .Xr ln 1 , .Xr ls 1 , .Xr mv 1 , .Xr pax 1 , .Xr rm 1 , .Xr tar 1 , .Xr lchflags 2 , .Xr lchmod 2 , .Xr lchown 2 , .Xr lstat 2 , .Xr lutimes 2 , .Xr readlink 2 , .Xr rename 2 , .Xr symlink 2 , .Xr unlink 2 , .Xr fts 3 , .Xr remove 3 , .Xr chown 8 .\"ZZZ: 3.0-RELEASE compliant by N. Kumagai 99-1-21 diff --git a/ja_JP.eucJP/man/man7/tuning.7 b/ja_JP.eucJP/man/man7/tuning.7 index 9bf8c4a8a2..3c74bb8462 100644 --- a/ja_JP.eucJP/man/man7/tuning.7 +++ b/ja_JP.eucJP/man/man7/tuning.7 @@ -1,936 +1,934 @@ .\" Copyright (C) 2001 Matthew Dillon. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" %FreeBSD: src/share/man/man7/tuning.7,v 1.67 2004/08/07 04:40:20 imp Exp % +.\" %FreeBSD: src/share/man/man7/tuning.7,v 1.67.2.1 2004/12/21 21:34:57 keramida Exp % .\" .\" $FreeBSD$ .Dd June 25, 2002 .Dt TUNING 7 .Os .Sh 名称 .Nm tuning .Nd FreeBSD における性能チューニング .Sh システム設定 - disklabel, newfs, tunefs, スワップ .Xr bsdlabel 8 または .Xr sysinstall 8 を使ってハードディスク上にファイルシステムをレイアウトする場合、 ディスクの内周トラックよりも外周トラックのほうがずっと速くデータを 転送できることを意識することが重要です。 この利点を生かすには、 小さいファイルシステムやスワップを外周トラックに近いほうから 詰めていくべきです。 より大きいファイルシステムは内周へ近いほうへ詰めていき、 最も大きいファイルシステムを最後にします。 後でマシンを増強した時にシステム標準のファイルシステムの大きさを 変更しなくて済むような大きさに決めることが重要です。 私は大抵、順番にルートパーティションに 128M、スワップに 1G、 .Pa /var に 128M、 .Pa /var/tmp に 128M、 .Pa /usr に 3G、 そして残りを .Pa /home に割り当てます。 .Pp 典型的にはメインメモリの約 2 倍のスワップスペースを用意すべきです。 RAM がそれほど多くない場合は、一般にもっとスワップが必要でしょう。 256M より小さいスワップを設定するのは奨められません。 スワップ パーティションの大きさを決めるときは将来のメモリ増設のことを 考えておくべきです。 カーネルの VM ページングアルゴリズムは、スワップの大きさが メインメモリの少なくとも 2 倍ある場合に最高の 性能が出るようにチューンされています。 スワップを小さくしすぎると、 VM ページ走査コードが効率的に動かなくなります。 メモリをさらに追加した時も同様です。 最後に、複数の SCSI ディスク (あるいは異なるコントローラ上にある 複数の IDE ディスク) を備えた大規模なシステムにおいては、 それぞれのドライブにスワップを置くことを強く推奨します。 各ドライブ上のスワップパーティションがほぼ同じ大きさになる ようにしてください。 カーネルは任意の大きさを扱うことができますが、内部のデータ構造は 最大のスワップパーティションのものの 4 倍の大きさになってしまいます。 スワップパーティションをだいたい同じ大きさにすることで、 カーネルは最適な方法でスワップ空間を N 台のディスクに対し ストライピングします。 少々のやりすぎを気にする必要はありません。 スワップ空間は .Ux が優雅に動作するためのものです。 普段それほどスワップを使っていなくても、 プログラムの暴走で強制的にリブートしてしまう前に、 回復作業をするための時間稼ぎになります。 .Pp .Pa /var パーティションをどれだけの大きさにするかは、そのマシンを 何に使うかということに大きく依存します。 このパーティションは主にメールボックスやプリントスプール、 ログファイルの保存場所に使われます。 .Pa /var/log を別のパーティションにする人もいます (しかし、パーティション ID を 消費しないほうが良い極端な場合は例外です)。 メールサーバやプリントサーバ、あるいは 訪問数が非常に多い Web サーバとしてマシンが動作するなら、 極めて大きいパーティション \(en おそらく 1 ギガバイト以上 \(en を 作成することを考えるべきでしょう。 ログファイルの保存に必要な大きさは、小さく見積もられがちです。 .Pp .Pa /var/tmp の大きさは、テンポラリファイルの類が どれだけ使われる必要があるかで決まります。 最低でも 128M にすることを推奨します。 また sysinstall は .Pa /tmp ディレクトリも作成します。 テンポラリファイル領域専用に 1 つのパーティションを 割り当てることは重要で、2 つの理由があります: クラッシュ時のファイルシステムの破壊の可能性を 減らすのと、 .Oo Pa /var Oc Ns Pa /tmp を一杯にしてしまう ような暴走プロセスが、さらに重要なサブシステム (メールやログ等) に影響を与える可能性を減らすためです。 .Oo Pa /var Oc Ns Pa /tmp が一杯になってしまうのはよくある問題です。 .Pp かつては .Pa /tmp と .Pa /var/tmp の間には違いがありましたが、 .Pa /var (と .Pa /var/tmp ) の導入によってプログラマは大変混乱し、 今日では両方がでたらめに使われています。 つまりこの 2 つは実際には区別することができません。 したがって、1 つのテンポラリディレクトリだけにして、 他の .Pa tmp ディレクトリからここへソフトリンクを張ることは意味があります。 どのように .Pa /tmp を扱ったとしても、 それがルートパーティションにあるのは好ましくないでしょう。 一杯になったり、クラッシュやリブートにより破壊される 可能性があるからです。 .Pp .Pa /usr パーティションはシステムをサポートするために 必要なファイルの大部分を持っており、そのサブディレクトリ .Pa /usr/local は .Xr ports 7 階層からインストールされるファイルの大部分が置かれます。 ports をあまり使わず、システムのソース .Pq Pa /usr/src を保持するつもりがなければ .Pa /usr は 1 ギガバイトで十分でしょう。 しかし、大量の ports (特にウィンドウマネージャや Linux エミュレーションされるバイナリ) をインストールする場合は、 少なくとも 2 ギガバイトの .Pa /usr を推奨します。 さらに、システムのソースを保持するつもりであれば、3 ギガバイトの .Pa /usr を推奨します。 このパーティションに対して必要な領域の大きさを過小評価 しないでください。 これは緩やかに成長し、驚かされることになります ! .Pp .Pa /home パーティションはユーザ固有のデータを保持するのに使われます。 私は大抵ディスクの残りを使います。 .Pp 何故 パーティションを切るのでしょう ? 1 つの大きな .Pa / パーティションを作るだけで良いのではないでしょうか ? そうすれば小さすぎないかどうか気にする必要はないのに ! はい、その考えが良くないのは、いくつか理由があります。 1 つめは、それぞれのパーティションは運用上の性格が 異なるのですが、それらを分離することでファイルシステムに対し その性格に適したチューンをすることが可能になるからです。 例えばルートパーティションや .Pa /usr パーティションはほとんど読み込みであり、ほとんど書き込みがありません。 一方で .Pa /var や .Pa /var/tmp に対しては大量の読み込みや書き込みがあるでしょう。 システムをうまく分割することで、書き込みが多いパーティションの破壊に よる被害が、ほとんど読み込みのみのパーティションに及ばないようします。 加えて、書き込みが多いパーティションをディスクの端 (すなわちパーティションテーブルにおいて、 本当に大きなパーティションの後ろではなく、前の方) の方に置くことで、そのパーティションについて性能が向上します。 より大きなパーティションについても入出力性能が必要なのも確かですが、 .Pa /var をディスクの端に置くと大きな改善が可能であるのに対し、 巨大なパーティションをディスクの端に置いてもそれほど性能の 改善にはつながりません。 最後は安全性に関わることです。 小さく、簡潔な、本質的に読み込みのみの ルートパーティションとすることで、クラッシュを生き延びるチャンスを 大きくすることができます。 .Pp システムを正しく分割することで、 .Xr newfs 8 や .Xr tunefs 8 に与えるパラメータをチューンすることも可能になります。 .Xr newfs 8 のチューニングにはさらに経験が必要ですが、かなりの性能改善につながります。 比較的安全にチューンできる 3 つのパラメータがあります: -.Em blocksize , -.Em bytes/inode , +.Em blocksize , bytes/inode , .Em cylinders/group です。 .Pp .Fx は 8K または 16K のファイルシステムブロックサイズを使用した時に 最高の性能が得られます。 デフォルトは 16K であり、 ほとんどのアプリケーションで良い結果となりますが、 大きなファイルにランダムアクセスするアプリケーション (データベースサーバソフトウェア等) は例外です。 このようなアプリケーションでは、 小さなブロックサイズで良い結果となる傾向がありますが、 最近のディスクの特性においては、 小さなブロックサイズの使用は考慮に値しないでしょう。 16K より大きなブロックサイズを使用すると バッファキャッシュの断片化を招き、性能が低下します。 .Pp デフォルトは、 多大な inode を必要とするファイルシステムや、 多大な小ファイルを保持することを意図したファイルシステムには 向かないかもしれません。 このようなファイルシステムは、 8K または 4K のブロックサイズで作成されるべきです。 これはまた、小さなフラグメントサイズを指定する必要があります。 常にブロックサイズの 1/8 のフラグメントサイズにすることを推奨します (他のフラグメントサイズの割合ではあまりテストされていません)。 この場合の .Xr newfs 8 オプションは .Dq Li "newfs -f 1024 -b 8192 ..." となるでしょう。 .Pp 大きなパーティションに、データベースファイルのような 少数の大きなファイルを置くのであれば、 -.Em bytes/inode +.Em bytes/i-node の比率を増やすことができます。 これは、そのパーティションの inode の数 (ファイルやディレクトリの最大の数) を減らします。 inode の数を減らすことで、クラッシュ後の .Xr fsck 8 による修復時間を大幅に減らすことができます。 本当にこのパーティションに大きなファイルを置くのでない限り、 このオプションを使わないでください。 空き領域が大量にあるのにファイルを収容できなくなるかもしれません。 bytes/inode は、32768 か 65536 か 262144 とすることが推奨されます。 もっと大きな値にすることができますが、 .Xr fsck 8 による修復時間を増やすだけでしょう。 例えば、 .Dq Li "newfs -i 32768 ..." のようにして値を与えます。 .Pp .Xr tunefs 8 はファイルシステムをさらにチューンするのに使えます。 このコマンドは、シングルユーザモードで実行することができ、 ファイルシステムの再フォーマットは不要です。 しかし、おそらく最も誤って使用されているプログラムでしょう。 多くの人はファイルシステムの利用可能な空き領域を増やそうとして、 min-free 比率を 0 に設定します。 これはファイルシステムの猛烈な断片化につながるので、推奨されません。 ここで、唯一本当に価値がある .Xr tunefs 8 のオプションは、 .Dq Li "tunefs -n enable /filesystem" として .Em softupdates を有効にすることです (注意: .Fx 4.5 以降では .Xr newfs 8 に .Fl U オプションを与えることで softupdates を有効に することができます。 そして .Xr sysinstall 8 は、ルート以外のファイルシステムの softupdates を標準で 自動的に有効にします)。 softupdates はメタデータの性能、 主にファイルの作成と削除の性能を劇的に改善します。 大部分のファイルシステムで softupdates を有効にすることを推奨します。 しかしながら、ファイルシステムで softupdates を使うかどうか判断する際に 気をつけるべき 2 つの制限があります。 1 つめは、softupdates はクラッシュ時における ファイルシステムの一貫性は保証しますが、 未反映の物理ディスク書き込みより何秒か (1 分になることもあります!) おそらく遅れていることです。 クラッシュした場合、より多くの成果が消えてしまうかもしれません。 2 つめは、softupdates はファイルシステムブロックを解放するのを遅らせる ということです。 あるファイルシステム (例えばルートファイルシステム) が満杯近くの時に それに対する大規模な更新、たとえば .Dq Li "make installworld" をすると、空き領域を使い果たして更新が失敗してしまうことがあります。 そのため標準的なインストールではルートファイルシステムの softupdates を 有効にしません。 ルートファイルシステムは滅多に書き込まれませんので、性能上の損失はありません。 .Pp .Xr mount 8 実行時のいくつかのオプションはファイルシステムをチューンするのに役立ちます。 最も明らかで、しかも最も危険なのは .Cm async です。 これは決して使わないでください。 大変危険です。 比較的危険度が低く、より役に立つ .Xr mount 8 のオプションは .Cm noatime です。 通常 .Ux ファイルシステムは、ファイルやディレクトリにアクセスが あった場合は常に、その最終アクセス時刻を更新します。 .Fx では、この動作は遅延書き込みで行なわれ、 通常は大した負荷にはなりません。 しかし、大量のファイルが連続してアクセスされた場合、 バッファキャッシュがアクセス時刻の更新で汚染され 大きな負荷となります。 例えば、高負荷の web サイトや大量の読者を抱えるニューズサーバ では、この .Xr mount 8 のオプションで大きなパーティションにおける アクセス時刻の更新を停止することが考えられます。 根拠もなく、すべての場所でアクセス時刻の更新を停止しないでください。 例えば、 .Pa /var ファイルシステムは、慣習的にメールボックスを保持し、 新規メールのメールボックス中の有無判定に atime (および mtime) が使用されます。 読み込み専用パーティション、 .Pa / や .Pa /usr では、atime をオンにしておいた方が良いでしょう。 システムユーティリティには、atime フィールドを使用するものがあるので、 .Pa / では特に有用です。 .Sh ディスクのストライピング 大きなシステムでは、いくつかのドライブのパーティションを互いに ストライピングして、全体として巨大なパーティションを作ることもあります。 ストライピングは、入出力操作を複数のディスクに振り分けることで ファイルシステムの性能を向上させることができます。 .Xr vinum 8 および .Xr ccdconfig 8 ユーティリティは、シンプルなストライピングされたファイルシステムを 作るのに使われます。 一般に、ルートや .Pa /var/tmp のような小さなパーティション、 あるいは .Pa /usr のような本質的に読み込みのみのパーティションを ストライピングしても時間の無駄にしかなりません。 本当に入出力性能を必要とするパーティションのみをストライピングするべきです。 典型的には -.Pa /var -や -.Pa /home +.Pa /var , /home あるいはデータベースや Web ページを 保持するカスタムパーティションです。 適切なストライプサイズを選ぶことも重要です。 ファイルシステムはメタデータを 2 の累乗の境界で格納する傾向にあり、 大抵はシークを増やすのではなく減らしたいでしょう。 これは、1152 セクタといったような、 シーケンシャルな I/O が両方のディスクをシークしないように、 かつメタデータが単一のディスクに集中するのではなく両方に分散するような、 中心を外れた (off-centered) 大きな ストライプサイズにしたい、ということを意味します。 本当に性能が必要なら、 .Fx がサポートする本物のハードウェア RAID コントローラを 使うことを勧めます。 .Sh sysctl によるチューニング .Xr sysctl 8 変数は、実行時に、システムの動作のモニタおよび制御を可能とします。 sysctl には、単にシステムの動作を報告するものもありますが、 システムの動作を変更するものもあります。 ブート時に .Xr rc.conf 5 を使用して設定可能なものもありますが、大部分は .Xr sysctl.conf 5 で設定可能です。 システムには数百の .Xr sysctl 8 変数が存在します。 そのなかには、チューニングの候補のように見えますが本当は そうでないものも多く含まれます。 この文書では システムに最も大きな影響を与えるものだけを扱います。 .Pp .Va kern.ipc.shm_use_phys sysctl は、デフォルトが 0 (オフ) であり、 0 (オフ) または 1 (オン) にセットすることができます。 このパラメータを 1 にセットすると、全ての System V 共有メモリセグメントが ページング不可の物理メモリにマップされます。 これは、(A) 大量 (数百) のプロセス間で少量の共有メモリを マッピングしているか、(B) 任意個のプロセス間で大量の共有メモリを マッピングしている、のいずれかの場合に効果があります。 この機能は、共有メモリをスワップ不可にすることで、 共有メモリをコアに結び付ける時に生じる、 カーネルにおける内部のメモリ管理によるページ追跡 オーバヘッドをかなり減らします。 .Pp .Va vfs.vmiodirenable sysctl は、デフォルトは 1 (オン) です。 このパラメータは、ディレクトリがシステムによってどのように キャッシュされるかを制御します。 ほとんどのディレクトリは小さく、 ファイルシステムにおいては単一フラグメント (典型的には 1K) であり、バッファキャッシュではさらに小さくなっています (典型的には 512 バイト)。 しかし、デフォルトモードで動作している時は、 大量のメモリを搭載していても バッファキャッシュは固定数のディレクトリしかキャッシュしません。 この sysctl をオンにすると、バッファキャッシュが VM ページキャッシュを、ディレクトリをキャッシュするために使うことを可能に します。 これによる利点は、全てのメモリがディレクトリを キャッシュするのに使えるようになるということです。 欠点は、キャッシュに使われる最小のメモリの大きさが 512 バイトではなく 物理ページサイズ (大抵は 4K) になることです。 メモリに制約があるシステムでは、 このオプションをオフにすることを推奨します。 一方、オンにすると、多数のファイルを操作するサービスの性能が向上します。 そのようなサービスには、web キャッシュや、大規模なメールシステム、 ニューズシステムなどが含まれます。 このオプションは一般に メモリを消費しますが、性能を削減することはありません。 ただし実験して調べてみるべきでしょう。 .Pp .Va vfs.write_behind sysctl は、デフォルトで 1 (オン) です。 これによって、 ファイルシステムからメディアへの書き込みが、クラスタ分が集まった時に 発行されるようになります。 そのような状況は、典型的には、大きな シーケンシャルファイルへ書き込んでいる時に起こります。 これは、I/O パフォーマンスに寄与しないであろう場合に、 ダーティなバッファでバッファキャッシュが飽和するのを避けるという アイデアです。 しかしながら、これによってプロセスが止まるかも しれないので、状況によっては この機能を切りたいと望むかもしれません。 .Pp .Va vfs.hirunningspace sysctl は、任意の時点においてシステム全体で、 ディスクコントローラのキューに入れて未完了状態にして良い、 書き込み I/O の量を決定します。 通常、デフォルト値で十分ですが、 ディスクをたくさん持つマシンでは 4、5メガバイトに増やしたくなるかもしれません。 値を大きくしすぎる (バッファキャッシュの 書き込みの閾値を超えて) と、クラスタリングの効果が極端に悪くなる 可能性があるので注意してください。 この値を思いつきで大きくしては いけません! また書き込みのキュー値を大きくすると、同時に発生した 読みだしが待たされるかもしれません。 .Pp 他にもバッファキャッシュと VM ページキャッシュに関連した、様々な sysctl が 存在します。 これらを変更することは推奨されません。 .Fx 4.3 について言えば、VM システムは自分自身のチューニングに関して大変良い 仕事をしています。 .Pp .Va net.inet.tcp.sendspace sysctl と .Va net.inet.tcp.recvspace sysctl は、ネットワークに関連するアプリケーションを 稼動している場合は特に重要です。 これは、TCP コネクションの 送信および受信バッファ領域の大きさを調節します。 デフォルトでは、送信バッファは 32K で、受信バッファは 64K です。 このデフォルトを増やすことで 各コネクションについてカーネルメモリがさらに消費されますが、 帯域幅の利用率が改善することがあります。 同時に数百とか数千のコネクションを扱っている場合、 このデフォルトを増やすことは推奨されません。 失速してしまったコネクションが蓄積することで、 システムがメモリをすぐに使い果たしてしまうからです。 しかし、少ない数のコネクションについて広い帯域幅が必要ならば、 特にギガビットイーサネットの場合、このデフォルトを大幅に増やす ことができます。 入力データと出力データのバッファを個別に調整することができます。 たとえば、主に web サービスをしているマシンならば recvspace を 減らすことで、それほど大量にカーネルメモリを消費せずに sendspace を増やすことができます。 -経路表 ( -.Xr route 8 +経路表 +.Pf ( Xr route 8 を参照 ) に対しては、経路に特化した送受信バッファを導入することが できるということに注意してください。 .Pp 付加的な管理ツールとして、ファイアウォールルールにおいて -パイプ (pipe) を使うことで ( -.Xr ipfw 8 +パイプ (pipe) を使うことで +.Pf ( Xr ipfw 8 を参照)、特定の IP ブロックやポートへ行く、あるいはそこから 来る帯域幅を制限することができます。 例えば T1 回線を持っている場合、 web トラフィックは回線の 70% に制限し、残りをメールと インタラクティブな用途に使いたいと思うでしょう。 通常高い負荷の web サーバは、ネットワーク回線が 使い切られていても、他のサービスに大きな遅延を与えることは ありませんが、制限をかけることは物事を円滑にし長期的な安定につながります。 また、多くの人が、帯域超過による課金をされないように 意図的な帯域制限をかけています。 .Pp .Va net.inet.tcp.rfc1323 sysctl で制御可能な TCP プロトコルのウィンドウスケーリング拡張を 両方のホストがサポートしない限り、 TCP の送信あるいは受信バッファサイズを 65535 を超えて指定しても ほとんど性能の改善はありません。 ある種のネットワークリンクから良い性能を引き出すために、 これらの拡張を有効にし、 TCP バッファサイズを 65536 より大きく設定すべきです。 特に、ギガビット WAN リンクや、高レイテンシの衛星リンクが対象となります。 RFC1323 サポートは、デフォルトでオンになっています。 .Pp .Va net.inet.tcp.always_keepalive sysctl は、TCP 実装が、コネクション上に断続的に .Dq keepalives を配送することで死んでしまった TCP コネクションの検出を試みるか どうかを決定します。 デフォルトで、これはすべてのアプリケーションについて許可されています。 この sysctl を 0 に設定すると、特に keepalives を要求した アプリケーションだけが検出機能を利用できます。 大抵の環境において、死んでしまった TCP コネクションを失効にすることで、 TCP keepalives はシステム状態の管理を改善します。 特にダイヤルアップのユーザにサービスを提供しているシステムでは 効果があります。 なぜならユーザがネットワークとのコネクションを切る前に いつも個々の TCP コネクションを終了するとは限らないからです。 しかしながら、ある種の環境では、一時的なネットワークの停止が 誤ってセッションの死と判断されるかもしれません。 結果として 予期しない TCP コネクションの終了となります。 その様な環境では、sysctl を 0 に設定することで、 TCP のセッション切断の発生を減らせるかもしれません。 .Pp .Va net.inet.tcp.delayed_ack TCP 機能は大きく誤解されています。 歴史的には、この機能は、転送されたデータに対する確認応答を、 応答と共に返せるようにするためにデザインされました。 例えば、リモートシェル上でキー入力しているとき、 あなたが送信した文字への確認応答は、文字のエコーを表すデータと共に返されます。 遅延確認応答をオフにすると、 リモートサービスが丁度受け取ったデータをエコーする機会を得る前に、 確認応答がそれだけを含むパケットで送られてしまうかもしれません。 この同じ考え方がすべての対話的プロトコル (例 SMTP, WWW, POP3) にあてはまり、 ネットワークの片一方を流れている小パケットを減らせるのです。 .Fx の遅延確認応答の実装も、TCP プロトコルの規則に従っています。 すなわち、標準の 100ms のタイムアウトが経過しなくても、 2 パケットに 1 回は確認応答を行います。 通常、遅延確認応答が行う最悪のことは、コネクションの破壊を少々遅らせること、 スロースタート TCP コネクションの立ち上がりを少々遅らせることです。 確かなことは分かりませんが、 SAMBA や SQUID といった package に関連する FAQ が 遅延確認応答をオフにするように勧めているのは、 スロースタートの問題に言及しているのでしょう。 .Fx では、スロースタートフライトサイズを .Va net.inet.tcp.slowstart_flightsize sysctl で増やすことの方が、遅延確認応答をオフにするより、利益があるでしょう。 .Pp .Va net.inet.tcp.inflight.enable sysctl は、すべての TCP コネクションに対し、 バンド幅と遅延の積による制限を適用します。 システムは、各コネクションに対してバンド幅と遅延の積を計算し、 ネットワークにキューされるデータ量を、 最適なスループットを確保するのに必要な量に限定しようとします。 この機能が有用なのは、モデムやギガビットイーサや高速 WAN リンク (といったバンド幅と遅延の積が大きなネットワーク) 経由でデータを 提供している場合であり、 特に有用なのは、ウィンドウスケーリングを併用している場合や 大きな送信ウィンドウを設定した場合です。 本オプションを有効にする場合、 .Va net.inet.tcp.inflight.debug を 0 (デバッグ無効) に設定することを忘れずに。 実運用では、 .Va net.inet.tcp.inflight.min を少なくとも 6144 に設定すると有用でしょう。 しかしながら、最低値を大きく設定すると、 リンクによってはバンド幅制限を無効にする結果となり得ることに注意してください。 本限定機能は、 中間ルータやスイッチのパケットキューに蓄積されるデータ量を減らし、 ローカルホストのインタフェースキューに蓄積されるデータ量をも減らします。 キューされるパケット数が少ないと、対話的コネクション、 特に低速モデム経由のものは、短い往復時間での動作が可能になります。 しかしながら、この機能はデータ送信 (アップロード / サービス側) にのみ影響することに注意してください。 データ受信 (ダウンロード) には影響しません。 .Pp .Va net.inet.tcp.inflight.stab の調整はお勧めしません。 このパラメータのデフォルトは 20 であり、 バンド幅と遅延の積のウィンドウ計算に対して 2 個の極大パケットが追加されることを示します。 アルゴリズムの安定化のために、追加のウィンドウが必要となり、 状態の変化に対する応答性を高めます。 しかしながら、遅いリンク越しでは、ping の遅延を大きくしてしまいます (それでも、inflight アルゴリズム無しと比べれば、低いものです)。 このような場合、このパラメータを 15, 10, 5 に減らし、 .Va net.inet.tcp.inflight.min も (例えば 3500 へ) 減らすことで、望む効果が得られるかもしれません。 これらのパラメータを減らすのは、最終手段としてください。 .Pp .Va net.inet.ip.portrange.* sysctls は、 自動的に TCP や UDP ソケットに結合されるポート番号の範囲を制御します。 3 種類の範囲があります。 すなわち、下位の範囲、デフォルトの範囲、高位の範囲であり、 .Dv IP_PORTRANGE .Xr setsockopt 2 呼び出しで選択可能です。 ほとんどのネットワークプログラムが使用するのはデフォルトの範囲であり、 .Va net.inet.ip.portrange.first と .Va net.inet.ip.portrange.last で制御されます。 それぞれ 1024 と 5000 がデフォルトです。 範囲を限定されたポート範囲は外向きコネクションに使用され、 ある条件下ではシステムがポートを使い尽してしまう場合があります。 これは、高負荷のウェブプロキシを実行している場合に、よく発生します。 通常のウェブサーバ等の主に内向きコネクションを扱うサーバや、 メールリレー等の外向きコネクションが限られているサーバを実行している場合、 これは問題とはなりません。 ポートを使い果たしてしまう場合、適度に .Va net.inet.ip.portrange.last を増やしてみてください。 10000, 20000, 30000 といった値は大丈夫でしょう。 ポートの範囲を変えるときには、ファイアウォールの影響も考慮に入れるべきです。 ファイアウォールによっては、広い範囲のポート (通常は下位のポート) を遮蔽し、システムが高位のポートを外向きコネクションに 使用することを期待します。 このため、 .Va net.inet.ip.portrange.first を低下させることはお勧めできません。 .Pp .Va kern.ipc.somaxconn sysctl は、新しい TCP コネクションを受け付けるための listen キューの サイズを制限します。 高負荷の web サーバ環境では、 デフォルト値の 128 は新しいコネクションを余裕をもって扱うには低すぎます。 そのような環境では、この値を 1024 以上に増やすことが推奨されます。 サービスデーモン (例えば .Xr sendmail 8 や apache) は自分自身の listen キューのサイズを制限しているかもしれませんが、設定ファイルで キューのサイズを増やすディレクティブを持つようになるでしょう。 listen キューを大きくすることは、サービス拒否攻撃を防ぐのにも役立ちます。 .Pp .Va kern.maxfiles sysctl は、システムがどれだけの数のファイルをオープンできるかを 決めます。 デフォルトは典型的には数千ですが、データベースや記述子を 大量に使うデーモンを稼働している場合は 10000 や 20000 に引き上げる必要 があるかもしれません。 読み込み専用の .Va kern.openfiles sysctl を検査することで、システム上で開かれているファイル数を判定可能です。 .Pp .Va vm.swap_idle_enabled sysctl は、多数のユーザがシステムに出入りして大量のアイドルプロセスが ある大きなマルチユーザシステムで便利です。 そのようなシステムでは、フリーメモリの予約に対し、 継続して重大な負担をかける傾向にあります。 これをオンにして .Va vm.swap_idle_threshold1 sysctl と .Va vm.swap_idle_threshold2 sysctl でスワップアウトヒステリシス (アイドルの秒数) を調整することで アイドルプロセスに与えられているページの優先度を通常のページアウト アルゴリズムよりも速やかに下げることができます。 これはページアウトデーモンを手助けします。 必要がないかぎり、 このオプションはオンにしないでください。 これによって起こるトレードオフは、本質的に、 スワップとディスク帯域幅をより多く消費してメモリのプリページングを より早いうちに行うことだからです。 小さなシステムではこのオプションは有害となるでしょうが、 すでにある程度ページングが発生している大きなシステムでは、 このオプションによって、全体のプロセスがより容易にメモリへ入ったり 出たりするようにできるでしょう。 .Sh ローダのチューナブル システムの動作の一部は、 そのためのメモリ割り当てをブート処理の初期に行う必要があるために、 実行時には調整不可能です。 ローダのチューナブルを変更するには、これらの値を .Xr loader.conf 5 に設定し、システムをリブートする必要があります。 .Pp .Va kern.maxusers は、静的なシステムテーブルの大きさを制御します。 これには、 オープンファイルの最大数、ネットワークメモリ資源の大きさ等が含まれます。 .Fx 4.5 の時点では、 .Va kern.maxusers は、ブート時に、システムで利用可能なメモリ量に応じて、 大きさが自動的に決定されます。 また、実行時に、読み取り専用の .Va kern.maxusers sysctl 値を見て決定することも可能です。 サイトによっては、 .Va kern.maxusers を大きくしたり小さくしたりする必要があり、 これはローダチューナブルで設定可能です。 64, 128, 256 は、変な値ではありません。 膨大なファイル記述子が必要なのでない限り、 256 より大きくすることは勧められません。 .Va kern.maxusers によってデフォルト値が決定される多くのチューナブル値は、 本文書の別の場所に記述した方法で、 個々にブート時または実行時に上書き可能です。 .Fx 4.4 より古いシステムでは、 カーネルの .Xr config 8 オプションの .Cd maxusers を設定する必要があります。 .Pp .Va kern.ipc.nmbclusters を調整することで、システムが割り当てようとしている ネットワーク mbuf の数を増やすことができます。 それぞれのクラスタは約 2K のメモリに相当するので、 1024 は 2M のカーネルメモリをネットワークバッファに 予約することを示します。 簡単な計算でどれだけ必要なのかがわかります。 web サーバが同時に最大 1000 本のコネクションを扱い、 各コネクションが 16K の受信バッファと 16K の送信バッファを消費する場合、 約 32MB に相当するネットワークバッファを扱う必要があります。 経験から得た方法によると、2 倍すると良いとされています。 つまり 32MBx2 = 64MB/2K = 32768 です。 したがって、この場合は .Va kern.ipc.nmbclusters を 32768 に設定します。 中くらいの量のメモリが搭載されたマシンでは 1024 から 4096、 さらに大量のメモリが搭載されているなら 4096 から 32768 の値を 推奨します。 決して大きい値を指定すべきではありません。 ブート時にクラッシュを引き起こす可能性があります。 .Xr netstat 1 に .Fl m オプションを与えることで、ネットワーククラスタの使用状況が分かります。 古い .Fx ではこのチューナブルを持ちませんので、 代りにカーネルの .Xr config 8 オプションの .Dv NMBCLUSTERS を設定する必要があります。 .Pp ますます多くのプログラムが .Xr sendfile 2 システムコールを使ってネットワークを通じてファイルを 転送しています。 .Va kern.ipc.nsfbufs sysctl は .Xr sendfile 2 の実行時にファイルシステムバッファをどれだけの数だけ 使えるかを制御します。 通常このパラメータは .Va kern.maxusers に比例しているので、極端な場合を除いては このパラメータに手を出す必要はありません。 詳細は、 .Xr sendfile 2 マニュアルページの .Sx チューニング 節を参照してください。 .Sh カーネル構成におけるチューニング 大規模なシステムでは、いくつかのカーネルオプションを操作しなければ ならないかもしれません。 これらのオプションを変更する場合、あなたは ソースから新しいカーネルをコンパイルできなければなりません。 .Xr config 8 マニュアルページやハンドブックが良い入門となるでしょう。 あなただけのカスタムカーネルを作るときに一般に最初にすることは、 使用しないドライバやサービスをすべて削ることです。 .Dv INET6 や使わないドライバを削除することで、カーネルのサイズを時に 1 メガバイト以上減らすことができ、アプリケーションにさらに メモリを与えることができます。 .Pp .Dv SCSI_DELAY -と -.Dv IDE_DELAY は、システムの起動時間を減らすために使うことができます。 -このデフォルト値はかなり大きく、ブート処理の中で 15 秒以上を占めるでしょう。 +このデフォルト値はかなり大きく、ブート処理の中で 5 秒以上を占めるでしょう。 .Dv SCSI_DELAY -を 5 秒に減らしても大抵はうまく動きます (特に最近のドライブでは)。 +を 5 秒未満に減らしてもうまく動くかもしれません (特に最近のドライブでは)。 .Dv IDE_DELAY +(PC98 でのみ利用可能) を減らしてもうまくいきますが、少々慎重になる必要があります。 .Pp .Dv *_CPU オプションの多くはコメントアウトできます。 そのカーネルを Pentium クラスの CPU だけで動かすなら、 .Dv I386_CPU と .Dv I486_CPU は削除することができます。 ただし、 .Dv I586_CPU は、CPU が Pentium II 以上として認識されることを確認してから 削除してください。 Pentium や 486 としてさえ認識されるクローンが存在し、 その場合はこれらのオプションがないと起動することができません。 もし動いたらすごいことです ! オペレーティングシステムは、MMU や タスク切り替え、タイムベース、デバイス操作に至る、より高度な機能を より利用することができるようになります。 加えてより高度な CPU は、カーネルがカーネル自身をメモリにマップする 4MB の MMU ページをサポートします。 これは高いシステムコール負荷の 下での効率を上げます。 .Sh IDE ライトキャッシュ .Fx 4.3 では IDE のライトキャッシュがオフになりました。 これは IDE ディスクへの書き込み帯域幅を減らしてしまうことになりますが、 ハードドライブベンダに起因するデータの一貫性に関する重大な問題のために、 必要なことだと考えられました。 基本的には、書き込み完了時期について IDE ドライブが嘘をつくという問題です。 IDE ライトキャッシュがオンであると、 IDE ハードドライブはデータを順番に書きこまないばかりか、 ディスクの負荷が高い時にはいくつかのブロックの書き込みを 無期限に延期してしまいます。 クラッシュや電源故障の場合、ファイルシステムの重大な破壊を -もたらします。したがって私たちはデフォルトを安全側に変更しました。 +もたらします。 +したがって私たちはデフォルトを安全側に変更しました。 残念ながら、これは大変な性能の低下をもたらし、私たちはあきらめて このリリース後にオンに戻しました。 .Va hw.ata.wc sysctl 変数を見て、デフォルトをチェックしてみるべきです。 もし IDE ライトキャッシュがオフになっていたら、 .Va hw.ata.wc ローダチューナブルを 1 に設定することでオンに戻すことができます。 ATA ドライバシステムのチューニングに関する更なる情報は、 .Xr ata 4 を参照してください。 性能が必要なら SCSI を使いましょう。 .Sh CPU、メモリ、ディスク、ネットワーク 負荷が上がるとシステムのどの部分がボトルネックになりはじめているかによって、 チューニングの種類が違ってきます。 CPU を使い果たしている (アイドル時間が常に 0%) ならば、CPU を アップグレードしたり SMP マザーボード (CPU を複数にする) に移行 したり、あるいは負荷の原因となっているプログラムを見直して最適化する ことを考える必要があるでしょう。 スワップに対して大量のページングがあるなら メモリをもっと増やす必要があるでしょう。 ディスク性能が飽和している場合、CPU アイドル時間は高く、全般的に ディスクが飽和状態になっています。 .Xr systat 1 でこれらをモニタすることができます。 ディスク性能の飽和を解決するにはいろいろな方法があります: キャッシュのためのメモリを増やす、ディスクをミラーリングする、 複数のマシンに操作を分散させる等です。 ディスク性能が問題で、IDE ドライブを使っている場合、 SCSI に切り替えることでずいぶんよくなります。 生のシーケンシャルな帯域幅については、最近の IDE ドライブは SCSI のものに 匹敵していますが、調べると大抵 SCSI ドライブが勝っています。 .Pp 最後に、ネットワーク性能を使い果たしているかもしれません。 ネットワーク性能を改善するために最初に確認すべきことは、 ハブではなくスイッチを使っているか、ということです。 特に最近はスイッチは安くなっています。 ハブが高負荷になると、コリジョンバックオフのために深刻な問題が発生します。 また、1 台のホストに問題があると、LAN 全体の性能を大幅に低下させます。 次に、できるだけネットワーク経路を最適化することです。 例えば .Xr firewall 7 で説明した内部ホストを守るファイアウォールでは、 外部から見えるホストはファイアウォールを通さないトポロジです。 必要に応じて 10BaseT ではなく 100Base-T を、あるいは 100BaseT ではなく 1000BaseT を使いましょう。 最大のボトルネックは WAN 回線です (モデム、T1、DSL 等)。 回線を増強できないのであれば、 .Xr dummynet 4 機能を使ってピーク削減やその他のトラフィックシェイピングを 行い過負荷のサービス (web サービス等) が他のサービス (電子メール等) -に影響を与えるのを防いでください。逆もまた同様です。 +に影響を与えるのを防いでください。 +逆もまた同様です。 これは、家庭環境において、外部に公開しているサービス (web サービスや電子メール) よりも インタラクティブなトラフィック (ブラウザや .Xr ssh 1 ログイン) を 優先するために使うことができるでしょう。 .Sh 関連項目 .Xr netstat 1 , .Xr systat 1 , .Xr ata 4 , .Xr dummynet 4 , .Xr login.conf 5 , .Xr rc.conf 5 , .Xr sysctl.conf 5 , .Xr firewall 7 , .Xr hier 7 , .Xr ports 7 , .Xr boot 8 , .Xr bsdlabel 8 , .Xr ccdconfig 8 , .Xr config 8 , .Xr fsck 8 , .Xr ifconfig 8 , .Xr ipfw 8 , .Xr loader 8 , .Xr mount 8 , .Xr newfs 8 , .Xr route 8 , .Xr sysctl 8 , .Xr sysinstall 8 , .Xr tunefs 8 , .Xr vinum 8 .Sh 歴史 .Nm マニュアルページは、もともと .An Matthew Dillon -によって書かれました。 -最初に登場したのは +によって書かれ、 +2001 年 5 月に、 .Fx 4.3 -で、2001 年 5 月のことです。 +ではじめて登場しました。