doc/de_DE.ISO8859-1/books/fdp-primer/psgml-mode/chapter.sgml
2012-09-14 17:47:48 +00:00

211 lines
8.6 KiB
XML
Raw Blame History

<?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 &ndash; das Element zwischen dessen Start-
und Endtag sich der Cursor befindet &ndash; 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>