Guia Rapida de docbook xml y emacs
Contents
Paquetes
- emacs21
- psgml
- xmlto
- fop
Configuración
/home/USER/.emacs
;; DocBook GLUD dotemacs por Jorge Ernesto Guevara Cuenca jguevara@glud.udistrital.edu.co
(setq
;; Insertar DTD desde el menú DTD -> insert (Insert a DOCTYPE)
sgml-custom-dtd
'(
("DocBook XML 4.4"
"<?xml version='1.0' encoding=\"utf-8\"?>
<!DOCTYPE book PUBLIC \"-//OASIS//DTD DocBook XML V4.4//EN\"
\"/usr/share/xml/docbook/schema/dtd/4.3/docbookx.dtd\">")
("DocBook XML 4.4 article"
"<?xml version='1.0' encoding=\"utf-8\"?>
<!DOCTYPE article PUBLIC \"-//OASIS//DTD DocBook XML V4.4//EN\"
\"/usr/share/xml/docbook/schema/dtd/4.3/docbookx.dtd\">")
("DocBook XML 4.4 local DTD"
"<?xml version='1.0' encoding=\"utf-8\"?>
<!DOCTYPE book SYSTEM
\"/usr/share/xml/docbook/schema/dtd/4.4/docbookx.dtd\">")
("DocBook XML 4.4 article local DTD"
"<?xml version='1.0' encoding=\"utf-8\"?>
<!DOCTYPE article SYSTEM
\"/usr/share/xml/docbook/schema/dtd/4.4/docbookx.dtd\">"))
;; Leer la DTD automáticamente
sgml-auto-activate-dtd t
;; Colores para el modo (Highlight markup)
sgml-set-face t
;; Desactivar la inserción de commentarios automáticos
sgml-insert-missing-element-comment nil
;; Indicar el elemento en el que se encuentra
sgml-live-element-indicator t
;; Indentar los textos tambien
sgml-indent-data t)
(defun sgml-aentity ()
"Insertar entidad a con tilde"
(interactive)
(insert "á"))
(defun sgml-eentity ()
"Insertar entidad e con tilde"
(interactive)
(insert "é"))
(defun sgml-ientity ()
"Insertar entidad i con tilde"
(interactive)
(insert "í"))
(defun sgml-oentity ()
"Insertar entidad o con tilde"
(interactive)
(insert "ó"))
(defun sgml-uentity ()
"Insertar entidad u con tilde"
(interactive)
(insert "ú"))
(defun sgml-gnentity ()
"Insertar entidad ñ"
(interactive)
(insert "ñ"))
(defun sgml-quentity ()
"Insertar primer signo de interrogaciOn"
(interactive)
(insert "¿"))
(defun sgml-para ()
"Insert para tags and position cursor."
(interactive)
(sgml-insert-element 'para))
(defun sgml-comment ()
"Insert SGML comment and position cursor."
(interactive)
(insert "<!-- -->")
(backward-char 4))
(defun psgml-ext ()
"Useful set of keystrokes for sgml mode"
;;Definición de teclas para las personalizaciones del modo
(define-key sgml-mode-map "\C-cp" 'sgml-para)
(define-key sgml-mode-map "\C-cc" 'sgml-comment)
(define-key sgml-mode-map "\C-ca" 'sgml-aentity)
(define-key sgml-mode-map "\C-ce" 'sgml-eentity)
(define-key sgml-mode-map "\C-ci" 'sgml-ientity)
(define-key sgml-mode-map "\C-co" 'sgml-oentity)
(define-key sgml-mode-map "\C-cu" 'sgml-uentity)
(define-key sgml-mode-map "\C-cn" 'sgml-gnentity)
(define-key sgml-mode-map "\C-cq" 'sgml-gnentity)
;; right-click selected element for edit attributes popup
(define-key sgml-mode-map [mouse-3] 'sgml-attrib-menu))
(add-hook 'sgml-mode-hook 'psgml-ext)
(add-hook 'xml-mode-hook 'psgml-ext)
;;--------------Mouse--------------
(defcustom mouse-wheel-distance 10
"*Number of lines, maximum, to scroll the window when you move the mouse =
wheel."
:type `integer
:group `mouse)
;;--------------------------
(defun mouse-wheelscroll-down ()
" A function to scroll up or down in response to the mouse wheel."
(interactive)
(scroll-down
(min mouse-wheel-distance
(max 1 (- (window-height)
next-screen-context-lines)))))
;;--------------------------
(defun mouse-wheelscroll-up ()
" A function to scroll up or down in response to the mouse wheel."
(interactive)
(scroll-up
(min mouse-wheel-distance
(max 1 (- (window-height)
next-screen-context-lines)))))
(global-set-key [mouse-4] (function mouse-wheelscroll-down))
(global-set-key [mouse-5] (function mouse-wheelscroll-up));
(custom-set-variables
;; custom-set-variables was added by Custom -- don't edit or cut/paste it!
;; Your init file should contain only one such instance.
'(case-fold-search t)
'(current-language-environment "Spanish")
'(default-input-method "spanish-postfix")
'(global-font-lock-mode t nil (font-lock))
'(show-paren-mode t nil (paren))
'(text-mode-hook (quote (turn-on-auto-fill text-mode-hook-identify)))
'(transient-mark-mode t))
(custom-set-faces
;; custom-set-faces was added by Custom -- don't edit or cut/paste it!
;; Your init file should contain only one such instance.
)
Uso
Arrancando emacs / abriendo el archivo
Importante que el archivo tenga extención .xml
usuario@host: $ emacs documento.xml
Insertar la DTD
C-c C-u C-d
Tabular para autocompletar DocBook XML 4.1
Tambien puede copiar el siguiente encabezado:
Para usar la DTD local.
<?xml version='1.0' encoding="utf-8"?> <!DOCTYPE book SYSTEM "/usr/share/xml/docbook/schema/dtd/4.4/docbookx.dtd">
Para usar la DTD desde internet.
<?xml version='1.0' encoding="utf-8"?> <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
Imagenes en html y pdf
Si esta usando fop todas las imagenes conviertalas a .svg y use etiquetas docbook así:
<mediaobject id="MyImage">
<imageobject role="html">
<imagedata format="PNG" fileref="image.png"/>
</imageobject>
<imageobject role="fo">
<imagedata format="SVG" fileref="image.svg"/>
</imageobject>
</mediaobject>Si la etiqueta mediaobject está dentro de un elemento como figure no es necesario el id, el formato para usar en el rol fo depende de su procesador vea: http://www.sagehill.net/docbookxsl/GraphicFormats.html
Generar el documento (compilar)
html dividido
xmlto -v -o out html documento.xml
Una sola página de html
xmlto -v html-nochunks documento.xml
xmlto -v fo documento.xml; fop documento.fo documento.pdf