182 lines
6.4 KiB
Text
182 lines
6.4 KiB
Text
<!-- Copyright (c) 1998, 1999 Nik Clayton, All rights reserved.
|
|
|
|
Redistribution and use in source (SGML DocBook) and 'compiled' forms
|
|
(SGML HTML, PDF, PostScript, RTF and so forth) with or without
|
|
modification, are permitted provided that the following conditions
|
|
are met:
|
|
|
|
1. Redistributions of source code (SGML DocBook) must retain the above
|
|
copyright notice, this list of conditions and the following
|
|
disclaimer as the first lines of this file unmodified.
|
|
|
|
2. Redistributions in compiled form (transformed to other DTDs,
|
|
converted to PDF, PostScript, RTF and other formats) 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 DOCUMENTATION IS PROVIDED BY NIK CLAYTON "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 NIK CLAYTON 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 DOCUMENTATION, EVEN IF ADVISED OF THE
|
|
POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
The FreeBSD Japanese Documentation Project
|
|
|
|
Original revision: 1.7
|
|
$FreeBSD$
|
|
-->
|
|
|
|
<chapter id="psgml-mode">
|
|
<title><application>Emacs</application> で
|
|
<literal>sgml-mode</literal> を利用する</title>
|
|
|
|
<para>新しいバージョンの <application>Emacs</application> や
|
|
<application>XEmacs</application> (Ports Collection にあります)には、
|
|
PSGML と呼ばれる非常に便利なパッケージが附属しています。
|
|
これは拡張子がとなっている <filename>.sgml</filename> のファイルが読み込まれるか、
|
|
<command>M-x sgml-mode</command> と入力することで呼び出されます。
|
|
PSGML は、SGML ファイルやエレメント、属性を扱うためのメジャーモードです。
|
|
</para>
|
|
|
|
<para>このモードで提供されているいくつかのコマンドを知っていれば、
|
|
ハンドブックなどの SGML 文書をより簡単に扱うことができるようになります。
|
|
</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><command>C-c C-e</command></term>
|
|
|
|
<listitem>
|
|
<para><literal>sgml-insert-element</literal> を実行します。
|
|
実行すると、現在のカーソル位置に挿入すべきエレメント名が聞かれ、
|
|
TAB キーを使うことでエレメント名の補完ができます。また、
|
|
カーソル位置に挿入できないエレメント名は入力できないようになっています。
|
|
</para>
|
|
|
|
<para>挿入は、指定したエレメントのスタートタグとエンドタグが両方行なわれます。
|
|
もし、そのエレメントが他の必須エレメントを含む場合は、
|
|
その必須エレメントも同じように挿入されます。
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><command>C-c =</command></term>
|
|
|
|
<listitem>
|
|
<para><literal>sgml-change-element-name</literal> を実行します。
|
|
カーソルをエレメントの内側に移動させてこのコマンドを実行して下さい。
|
|
変更するエレメント名が聞かれ、現在のエレメントのスタートタグとエンドタグが
|
|
入力した新しいエレメントのものに変更されます。
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><command>C-c C-r</command></term>
|
|
|
|
<listitem>
|
|
<para><literal>sgml-tag-region</literal> を実行します。
|
|
テキストを指定(テキストの開始点に移動して C-Space を押し、
|
|
終了点に移動して C-Space を押す)してから、このコマンドを実行して下さい。
|
|
利用するエレメント名が聞かれ、
|
|
マークが付けられた範囲(リージョン)のすぐ前後に指定したエレメントが挿入されます。
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><command>C-c -</command></term>
|
|
|
|
<listitem>
|
|
<para><literal>sgml-untag-element</literal> を実行します。
|
|
カーソルを削除したいエレメントのスタートタグか、エンドタグの上において
|
|
このコマンドを実行して下さい。すると、エレメントのスタートタグ、
|
|
エンドタグが両方とも削除されます。
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><command>C-c C-q</command></term>
|
|
|
|
<listitem>
|
|
<para><literal>sgml-fill-element</literal> を実行します。
|
|
実行すると、カーソル位置のエレメントの内容に対して、
|
|
(整形する時のように)再帰的な文章の詰めが行なわれます。
|
|
この詰め作業は、含まれている空白文字が重要なもの、たとえば
|
|
<sgmltag>programlisting</sgmltag>
|
|
エレメントの中などでも<emphasis>効果があります</emphasis>ので、
|
|
利用の際は注意して下さい。
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><command>C-c C-a</command></term>
|
|
|
|
<listitem>
|
|
<para><literal>sgml-edit-attributes</literal> を実行します。
|
|
実行するともう一つバッファを開き、
|
|
最も近い閉じたエレメントのすべての属性のリストと、現在の値を表示します。
|
|
TAB を使って属性間を移動することができ、<command>C-k</command> を
|
|
押すことで、既存の値を新しいものに置き換えることができます。
|
|
また、<command>C-c C-c</command> を押すことで、バッファを閉じて
|
|
元の文書に戻ることができます。
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><command>C-c C-v</command></term>
|
|
|
|
<listitem>
|
|
<para><literal>sgml-validate</literal> を実行します。
|
|
実行すると(必要に応じて)現在編集中の文書をセーブするかどうか聞かれ、
|
|
次に SGML の正当性検査が行なわれます。
|
|
検査の出力は新しいバッファに表示されますので、
|
|
誤りのある部分へひとつひとつ移動してマークアップのミスを修正することができます。
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
|
|
<para>もちろん、このモードには他にも有用な機能があります。
|
|
ここにあげたのは、その中でもわたしが非常に頻繁に利用しているものです。
|
|
</para>
|
|
|
|
<para>ドキュメンテーションプロジェクトで作業するのに、
|
|
適切な空白、字下げ、コラム幅を設定するのに、
|
|
<filename>.emacs</filename>
|
|
に以下のエントリを使うことができます。</para>
|
|
|
|
<programlisting>
|
|
(setq sgml-mode-hook
|
|
'(lambda ()
|
|
(setq fill-column 70
|
|
indent-tabs-mode nil
|
|
next-line-add-newlines nil
|
|
standard-indent 2)
|
|
(auto-fill-mode t)))
|
|
</programlisting>
|
|
|
|
</chapter>
|
|
|
|
|
|
<!--
|
|
Local Variables:
|
|
mode: sgml
|
|
sgml-declaration: "../chapter.decl"
|
|
sgml-indent-data: t
|
|
sgml-omittag: nil
|
|
sgml-always-quote-attributes: t
|
|
sgml-parent-document: ("../book.sgml" "part" "chapter")
|
|
End:
|
|
-->
|