Summary: This module explains how to use Emacs's XML editing mode (provided by PSGML) to easily edit CNXML documents
Emacs is an extremely versatile editing environment. In particular, it can use customized "modes" in which new commands are available. PSGML is an emacs mode for editing SGML and XML documents. It can speed up the process of marking up a document considerably. Using emacs and PSGML to edit CNXML documents requires the following setup steps:
Most Unix systems come with emacs already installed. Most
Microsoft Windows systems do not. A precompiled version for
Windows is available from the Gnu ftp site here.
(If you are on a Unix system that does not have emacs installed
you will have to compile it yourself, sorry!) Extract the
files using a program such as WinZip and install them
somewhere. A good place on Windows would be
C:\Program Files.
The next step is to ensure that you have PSGML installed on
your system. PSGML is a special SGML/XML editing mode for
Emacs, written by Lennart Staflin. Again, many Unix systems
have it installed already, but if yours does not, it is
available online.
If you installed your own emacs, extract the PSGML files in
the site-lisp directory under your emacs
installation.
emacs directory in your home directory,
extract the PSGML files there, and add the line
(setq load-path (cons "~/emacs"
load-path)) to the .emacs file in your home
directory.
Once you have PSGML installed, you need to setup an SGML
catalog. This catalog provide the translation from public
document types to physical file locations and allows emacs to
use the tags from your specific language. For simplicity,
Connexions has made available a catalog containing the CNXML,
MathML, and QML DTDs. You can download this from our website.
Just download this file and extract it somewhere on you
computer. A good place on Unix might be
/usr/local/share, or your home-directory.
On Windows you can extract it to C:\.
Remember where you extracted the files, because you will need
this information in the next step.
Now that everything is installed, you must configure emacs.
The first step is to tell emacs where your SGML catalog is.
This is most easily done by setting the environment variable
SGML_CATALOG_FILES to the location of
your catalog. For example, if you extracted the catalog in
the directory /usr/local/share, you would
set SGML_CATALOG_FILES to
/usr/local/share/sgml/catalog. On Unix
this is done in your shell initialization file
(.cshrc for C-shell users and
.profile for Bourne shell users). On
Win9X, setting variables can be done in your
C:\AUTOEXEC.BAT file. On WinNT, Win2K,
and WinXP this is done from the System item in the control panel.
You also need to add some instructions to your emacs
initialization file. Download the
xml.emacs file
and append it to your emacs init file. On Unix, the emacs
init file is named .emacs and resides in
your home directory. On Windows, it is named _emacs and does
not have a default location.
HOME to tell the system where your
_emacs file is located.
xml.emacs to .emacs
or _emacs as appropriate.
Now you are ready to begin writing CNXML with emacs. See The Basic CNXML for an introduction to writing documents in CNXML. You must begin the document with the XML declaration and specifying the document type definition to use. For example, to begin a document using CNXML, type the following lines:
<?xml version="1.0" standalone="no"?>
<!DOCTYPE document PUBLIC "-//CNX//DTD CNXML 0.5//EN"
"http://cnx.rice.edu/cnxml/0.5/DTD/cnxml_plain.dtd">
Once you have started the file out with this header you can begin adding markup elements.
M-x xml-mode. ("M" represents
the meta key, commonly mapped to 'Alt' on PC keyboards).
Once this file is saved, successive editing sessions will
bring up xml-mode automatically
C-c <
("C" represents the control key). Emacs will then
prompt you for the tag-name. Type the name of the tag you
want, or use TAB-completion. To insert a close tag for the
current element, type C-C /. Emacs will
automatically close the current tag. For those who prefer
menu commands, you can select Insert
Start-Tag or Insert End-Tag
from the Markup menu. Emacs will
drop-down a list of currently available tags.
Alternatively, to ensure that you have matched
start and end tags with the appropriate attributes and
children, you may insert an entire element at once. To do
this, type C-c C-e (or select
Insert Element from the menu) and type
the name of the desired element. This will insert opening and
closing tags for the element and prompt you for any required
attributes. It will also insert any required child elements.
Conversely, to delete an entire element with its children,
type C-M-k.
There are many other commands that you may find useful. Explore the Markup and View menus to get a feel for the available commands. You may also want to look at the reference manual distributed with PSGML.
Another useful feature of emacs is the ability to add tables to your CNXML document quickly and easily. This requires the emacs table package to be installed.
(require 'table) Tools menu list is a Table
tool. From there you can insert a table or you can type
M-x table-insert.
M-x table-generate-source. When it asks for
the language type cals. This will save the
file as a CALS
table valid document which is the format that
CNXML uses. This table can now be cut and pasted into a
CNXML document.
If your CNXML document is not written in English, you will probably need to enter non-English characters. If you have a non-US keyboard you can simply type the desired characters as you normally would. Many systems also include a "character picker" of some sort, allowing you to copy occasionally used characters or symbols to the clipboard. You can then paste them into emacs.
For accented characters
appearing in many western languages, you may want to use
emacs' iso-accents-mode
Just enter the command M-x iso-accents-mode.
You can then enter accented characters by typing
' (apostrophe) followed by a vowel. Check the instructions
for more details.