X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=texi%2Ftexi2latex.el;h=e60d58ac0979ee9d70583b1e3b2bf1e7ba4a293c;hb=ebdecdf203f300217a9a7f533dcf43fec5d427b4;hp=d7436fa86e7044059d979cbb1800a6a55d346719;hpb=a707b63af25b91cb730c12e65156ca364bf49a44;p=elisp%2Fgnus.git- diff --git a/texi/texi2latex.el b/texi/texi2latex.el index d7436fa..e60d58a 100644 --- a/texi/texi2latex.el +++ b/texi/texi2latex.el @@ -35,9 +35,13 @@ "Translate." (interactive) (latexi-translate-file "gnus") - (latexi-translate-file "gnus-faq")) + (latexi-translate-file "gnus-faq") + (latexi-translate-file "message" t) + (latexi-translate-file "emacs-mime" t) + (latexi-translate-file "sieve" t) + (latexi-translate-file "pgg" t)) -(defun latexi-translate-file (file) +(defun latexi-translate-file (file &optional as-a-chapter) "Translate file a LaTeX file." (let ((item-string "") (item-stack nil) @@ -62,6 +66,12 @@ (latexi-translate-string "%@{" "\\gnuspercent{}\\gnusbraceleft{}") (latexi-translate-string "%@}" "\\gnuspercent{}\\gnusbraceright{}") (latexi-translate-string "%1@{" "\\gnuspercent{}1\\gnusbraceright{}") + (latexi-translate-string "@*" "\\newline{}") + (latexi-translate-string "S@{" "S\\gnusbraceleft{}") + (latexi-translate-string "@code{\\222}" "@code{\\gnusbackslash{}222}") + (latexi-translate-string "@code{\\264}" "@code{\\gnusbackslash{}264}") + (latexi-translate-string "@samp{\\Deleted}" "@samp{\\gnusbackslash{}Deleted}") + (latexi-translate-string "@samp{\\Seen}" "@samp{\\gnusbackslash{}Seen}") ; (while (re-search-forward "{\"[^\"]*\\(\\\\\\)[^\"]*\"}\\\\" nil t) ; (replace-match "\\verb+\\\\+ " t t)) (while (not (zerop (decf times))) @@ -85,7 +95,7 @@ (progn (end-of-line) (point)))) (if (equal arg "@head") (insert "\\gnusinteresting"))) - ((member command '("setfilename" + ((member command '("setfilename" "set" "synindex" "setchapternewpage" "summarycontents" "bye" "top" "iftex" "cartouche" @@ -96,15 +106,24 @@ "ifnottex" "direntry")) (latexi-discard-until command)) ((member command '("subsection" "subsubsection")) - (latexi-switch-line command arg)) + (if as-a-chapter + (latexi-switch-line (format "sub%s" command) arg) + (latexi-switch-line command arg))) ((member command '("chapter")) - (latexi-switch-line - (format - "gnus%s{\\epsfig{figure=tmp/new-herd-%d.ps,scale=.5}}" - command (incf chapter)) - arg)) + (if (string-match "Index" arg) + (latexi-strip-line) + (if as-a-chapter + (latexi-switch-line "gnussection" arg) + (latexi-switch-line + (format + "gnus%s{%s}" command + (format "\\epsfig{figure=ps/new-herd-%d,scale=.5}" + (if (> (incf chapter) 9) 9 chapter))) + arg)))) ((member command '("section")) - (latexi-switch-line (format "gnus%s" command) arg)) + (if as-a-chapter + (latexi-switch-line "subsection" arg) + (latexi-switch-line (format "gnus%s" command) arg))) ((member command '("cindex" "findex" "kindex" "vindex")) (latexi-index-command command arg)) ((member command '("*")) @@ -112,9 +131,12 @@ (insert "\\\\")) ((equal command "sp") (replace-match "" t t)) + ((member command '("deffn" "defvar" "defun")) + (replace-match "" t t)) ((equal command "node") (latexi-strip-line) - (insert (format "\\label{%s}\n" arg))) + (unless (string-match "Index" arg) + (insert (format "\\label{%s}\n" arg)))) ((equal command "contents") (latexi-strip-line) ;;(insert (format "\\tableofcontents\n" arg)) @@ -160,6 +182,8 @@ (insert (format "\\end{%s}\n" arg))) ((member arg '("iflatex" "iftex" "cartouche")) (latexi-strip-line)) + ((member arg '("deffn" "defvar" "defun")) + (latexi-strip-line)) (t (error "Unknown end arg: %s" arg)))) ((member command '("table")) @@ -190,7 +214,9 @@ (insert "duppat{}")) ((equal command "settitle") (latexi-strip-line) - (insert (format "\\newcommand{\\gnustitlename}{%s}\n" arg))) + (if (not as-a-chapter) + (insert + (format "\\newcommand{\\gnustitlename}{%s}\n" arg)))) ((equal command "title") (latexi-strip-line) (insert (format "\\gnustitlename{%s}\n" arg))) @@ -207,7 +233,12 @@ (delete-char 1)) ((equal command "include") (latexi-strip-line) - (insert "\\input{gnus-faq.latexi}\n")) + (string-match "\\.texi" arg) + (insert (format "\\input{%s.latexi}\n" + (substring arg 0 (match-beginning 0))))) + ((equal command "noindent") + (latexi-strip-line) + (insert "\\noindent\n")) ((equal command "printindex") (latexi-strip-line) ;;(insert @@ -215,13 +246,22 @@ ;; "\\begin{theindex}\\input{gnus.%s}\\end{theindex}\n" arg)) ) (t - (error "Unknown command: %s" command)))) + (error "Unknown command (file %s line %d): %s" + file + (save-excursion + (widen) + (1+ (count-lines (point-min) (progn + (beginning-of-line) + (point))))) + command)))) ;; These are commands with {}. (setq arg (match-string 5)) (cond - ((member command '("xref" "pxref")) + ((member command '("anchor")) + (latexi-strip-line)) + ((member command '("ref" "xref" "pxref")) (latexi-exchange-command (concat "gnus" command) arg)) - ((member command '("sc" "file" "dfn" "emph" "kbd" + ((member command '("sc" "file" "dfn" "emph" "kbd" "key" "uref" "code" "samp" "var" "strong" "i" "result")) (goto-char (match-beginning 0)) @@ -240,7 +280,14 @@ (delete-char 2) (insert "duppat{}")) (t - (error "Unknown command: %s" command)))))) + (error "Unknown command (file %s line %d): %s" + file + (save-excursion + (widen) + (1+ (count-lines (point-min) (progn + (beginning-of-line) + (point))))) + command)))))) (latexi-translate-string "$" "\\gnusdollar{}") (latexi-translate-string "&" "\\gnusampersand{}") (latexi-translate-string "%" "\\gnuspercent{}")