mirror of
https://git.FreeBSD.org/doc.git
synced 2026-06-02 11:25:20 +00:00
210 lines
8.6 KiB
XML
210 lines
8.6 KiB
XML
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
<!-- 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: r39632
|
|
|
|
Anmerkungen:
|
|
Dieser Text wurde nach dem Lesen von "Technisches Schreiben
|
|
(nicht nur) fuer Informatiker" ueberarbeitet.
|
|
|
|
-->
|
|
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="psgml-mode">
|
|
<title><literal>sgml-mode</literal> und
|
|
<application>Emacs</application></title>
|
|
|
|
<para>Neuere <application>Emacs</application>- und
|
|
<application>XEmacs</application>-Versionen verfügen
|
|
über ein nützliches Lisp-Paket namens PSGML. PSGML
|
|
(das über den Port <package>editors/psgml</package> 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>.xml</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ügenden Elements
|
|
fragt. Ist dieser eingegeben worden und wurde die
|
|
<keycap>Eingabetaste</keycap> gedrückt, fügt die
|
|
Funktion Start- und Endtag des neuen Elements ein. Sofern
|
|
das eingefügte Element laut DTD andere Elemente
|
|
enthalten muß, werden diese ebenfalls
|
|
eingefügt.</para>
|
|
|
|
<para>Falls Sie unsicher sind, wie der Name des
|
|
gewü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öglicht <keycap>Tab</keycap> die
|
|
Vervollstä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ß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ß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ügenden Elements gefragt. Dessen
|
|
Start-Tag wird dann am Anfang des markierten Textes
|
|
eingefü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üllt und dann der Zeilemumbruch
|
|
erfolgt, ist konfigurierbar.</para>
|
|
</footnote> den Inhalt des aktuellen Elements neu. Dieser
|
|
Vorgang betrifft auch Elemente wie
|
|
<tag>programlisting</tag>, in denen Leerzeichen und
|
|
ähnliches Teil der Formatierung sind. Aus diesem Grund
|
|
ist mit <literal>sgml-fill-element</literal> bedä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
|
|
öffnet einen zweiten Puffer mit allen Attributen des
|
|
Elements, innerhalb dessen sich der Cursor befindet.
|
|
Über <keycap>Tab</keycap> kann von einem Attribut zum
|
|
nächsten gewechselt werden. Ein existierender
|
|
Attributwert kann mit <command>C-k</command> gelöscht
|
|
werden. Die Tastenfolge <command>C-c C-c</command>
|
|
schließ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ß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ü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ä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/xml/catalog")))
|
|
(add-hook 'psgml-mode-hook
|
|
'(lambda () (local-psgml-mode-hook)))</programlisting>
|
|
</chapter>
|