211 lines
8.6 KiB
XML
211 lines
8.6 KiB
XML
<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
|
||
<!-- 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.
|
||
|
||
$FreeBSD$
|
||
$FreeBSDde$
|
||
basiert auf: r38826
|
||
|
||
Anmerkungen:
|
||
Dieser Text wurde nach dem Lesen von "Technisches Schreiben
|
||
(nicht nur) fuer Informatiker" ueberarbeitet.
|
||
|
||
-->
|
||
|
||
<chapter id="psgml-mode">
|
||
<title><literal>sgml-mode</literal> und
|
||
<application>Emacs</application></title>
|
||
|
||
<para>Neuere <application>Emacs</application>- und
|
||
<application>XEmacs</application>-Versionen verf<72>gen
|
||
<20>ber ein n<>tzliches Lisp-Paket namens PSGML. PSGML
|
||
(das <20>ber den Port <filename
|
||
role="package">editors/psgml</filename> installiert werden kann) ist
|
||
ein so genannter <foreignphrase>Majormode</foreignphrase>, der
|
||
Funktionen speziell f<>r den Umgang mit SGML-Dateien,
|
||
-Elementen und deren Attributen bereit stellt. Emacs aktiviert
|
||
PSGML automatisch, wenn eine Datei mit der Endung
|
||
<filename>.sgml</filename> geladen oder der Befehl <command>M-X
|
||
sgml-mode</command> eingegeben wird.</para>
|
||
|
||
<para>Die Arbeit an SGML-Dokumenten wie dem FreeBSD-Handbuch kann
|
||
sich wesentlich einfacher gestalten, wenn einige der Funktionen
|
||
von PSGML gekannt sind:</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><command>C-c C-e</command></term>
|
||
|
||
<listitem>
|
||
<para>Ruft die Funktion <function>sgml-insert-element</function>
|
||
auf, die nach dem Namen des einzuf<75>genden Elements
|
||
fragt. Ist dieser eingegeben worden und wurde die
|
||
<keycap>Eingabetaste</keycap> gedr<64>ckt, f<>gt die
|
||
Funktion Start- und Endtag des neuen Elements ein. Sofern
|
||
das eingef<65>gte Element laut DTD andere Elemente
|
||
enthalten mu<6D>, werden diese ebenfalls
|
||
miteingef<65>gt.</para>
|
||
|
||
<para>Falls Sie unsicher sind, wie der Name des
|
||
gew<65>nschten Elements lautet oder welche Elemente an der
|
||
aktuellen Position erlaubt sind, k<>nnen mittels der
|
||
Taste <keycap>Tab</keycap> alle <emphasis>an dieser
|
||
Stelle</emphasis> m<>glichen Elemente angezeigt
|
||
werden. Ebenso erm<72>glicht <keycap>Tab</keycap> die
|
||
Vervollst<73>ndigung eines bereits eingegebenen
|
||
Elementnamens.</para>
|
||
|
||
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><command>C-c =</command></term>
|
||
|
||
<listitem>
|
||
<para>Ruft die Funktion
|
||
<function>sgml-change-element-name</function> auf, mit der das
|
||
aktuelle Element – das Element zwischen dessen Start-
|
||
und Endtag sich der Cursor befindet – ausgewechselt
|
||
werden kann. Die Funktion fragt nach dem Namen des neuen
|
||
Elements und ersetzt anschlie<69>end Start- und Endtag
|
||
des alten Elements durch die des neuen Elements.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><command>C-c C-r</command></term>
|
||
|
||
<listitem>
|
||
<para>Ruft die Funktion <function>sgml-tag-region</function>
|
||
auf, die einen markierten Textabschnitt mit einem Element
|
||
umschlie<69>t. Dazu markieren Sie zuerst den Textabschnitt
|
||
(gehen Sie zum Anfang des Abschnitts und f<>hren Sie
|
||
<command>C-space</command> aus, dann gehen Sie zum Ende des
|
||
Abschnitts und f<>hren erneut <command>C-space</command>
|
||
aus), danach f<>hren Sie diese Funktion aus. Sie werden
|
||
nach dem Namen des einzuf<75>genden Elements gefragt. Dessen
|
||
Start-Tag wird dann am Anfang des markierten Textes
|
||
eingef<65>gt, dessen End-Tag am Ende des markierten
|
||
Texts.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><command>C-c -</command></term>
|
||
|
||
<listitem>
|
||
<para>Ruft die Funktion <function>sgml-untag-element</function>
|
||
auf, die Start- und Endtag des Elements entfernt, innerhalb
|
||
dessen sich der Cursor befindet.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><command>C-c C-q</command></term>
|
||
|
||
<listitem>
|
||
<para>Ruft die Funktion <function>sgml-fill-element</function>
|
||
auf. Diese Funktion formatiert<footnote>
|
||
<para>Formatieren bedeutet in diesem Zusammenhang,
|
||
dass die Funktion versucht, soviel Zeichen wie
|
||
m<>glich in einer Zeile unterzubringen. Die Stelle,
|
||
bis zu der gef<65>llt und dann der Zeilemumbruch
|
||
erfolgt, ist konfigurierbar.</para>
|
||
</footnote> den Inhalt des aktuellen Elements neu. Dieser
|
||
Vorgang betrifft auch Elemente wie
|
||
<sgmltag>programlisting</sgmltag>, in denen Leerzeichen und
|
||
<20>hnliches Teil der Formatierung sind. Aus diesem Grund
|
||
ist mit <literal>sgml-fill-element</literal> bed<65>chtig
|
||
umzugehen.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><command>C-c C-a</command></term>
|
||
|
||
<listitem>
|
||
<para>Ruft die Funktion
|
||
<function>sgml-edit-attributes</function> auf. Diese
|
||
<20>ffnet einen zweiten Puffer mit allen Attributen des
|
||
Elements, innerhalb dessen sich der Cursor befindet.
|
||
<20>ber <keycap>Tab</keycap> kann von einem Attribut zum
|
||
n<>chsten gewechselt werden. Ein existierender
|
||
Attributwert kann mit <command>C-k</command> gel<65>scht
|
||
werden. Die Tastenfolge <command>C-c C-c</command>
|
||
schlie<69>t den Puffer und setzt die Attribute des
|
||
Elements entsprechend den Puffervorgaben.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><command>C-c C-v</command></term>
|
||
|
||
<listitem>
|
||
<para>Ruft die Funktion <function>sgml-validate</function> auf,
|
||
die zuerst fragt, ob das aktuelle Dokument gespeichert
|
||
werden soll und anschlie<69>end einen SGML-Validator
|
||
aufruft. Die Ausgaben des Validators werden in einem neuen
|
||
Puffer angezeigt. Dadurch hat der Benutzer die
|
||
M<>glichkeit, eventuell vom Validator gefundene Fehler
|
||
zu korrigieren.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><command>C-c /</command></term>
|
||
|
||
<listitem>
|
||
<para>Startet die Funktion <function>sgml-insert-end-tag</function>,
|
||
die automatisch das passende End-Tag f<>r das gerade
|
||
offene Element einf<6E>gt.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
|
||
<para>Zweifellos hat PSGML noch weitere n<>tzliche Funktionen, doch
|
||
die hier genannten sind die, die der Autor dieser Fibel am meisten
|
||
benutzt.</para>
|
||
|
||
<para>Um den richtigen Einzug, die Umwandlung von Tabulatoren in
|
||
Leerzeichen und die maximale Zeilenl<6E>nge f<>r Dokumente des FDPs
|
||
sicherzustellen, kann folgender Eintrag in
|
||
<filename>.emacs</filename> vorgenommen werden:</para>
|
||
|
||
<programlisting> (defun local-sgml-mode-hook
|
||
(setq fill-column 70
|
||
indent-tabs-mode nil
|
||
next-line-add-newlines nil
|
||
standard-indent 4
|
||
sgml-indent-data t)
|
||
(auto-fill-mode t)
|
||
(setq sgml-catalog-files '("/usr/local/share/sgml/catalog")))
|
||
(add-hook 'psgml-mode-hook
|
||
'(lambda () (local-psgml-mode-hook)))</programlisting>
|
||
</chapter>
|