YaTeX

YaTeX とは

YaTeX(野鳥)は GNU Emacs / XEmacs の TeX モードです。


インストール

Debian GNU/Linux

#apt-get install yatex

だけで大丈夫です。なお2004-09-10付のパッケージ情報は以下のような感じです。

$ dpkg -s yatex
Package: yatex
Status: install ok installed
Priority: extra
Section: tex
Installed-Size: 804
Maintainer: INOUE Hiroyuki <dombly@kc4.so-net.ne.jp>
Architecture: all
Version: 1.71-1
Depends: emacs21 | emacsen
Recommends: ptex-bin | ptex-jtex, tetex-bin
Suggests: jbibtex, mendexk, jweblint | weblint, mozilla-browser |  netscape-browser-477, gimageview
Conffiles:

VineLinux

#apt-get install yatex

だけで大丈夫です。2004年02月01日づけのパッケージの内容は下記の通り

$ apt-cache show  yatex
Package: yatex
Section: Applications/Editors/EmacsLisp
Installed Size: 1083
Maintainer: KOBAYASHI R. Taizo  <tkoba@vinelinux.org>
Version: 1.72-0vl1
Pre-Depends: emacsen, emacsen-common (>= 0.4), /bin/sh, /bin/sh,  rpmlib(PayloadFilesHavePrefix) (<= 4.0-1), rpmlib(CompressedFileNames) (<= 3.0.4-1)
Depends: /bin/sh
Provides: yatex (= 1.72-0vl1)
Obsoletes: yatex-xemacs
Architecture: noarch
Size: 379451
MD5Sum: e0866c19a07e3c6b0c6a5acaaab41e40
Filename: yatex-1.72-0vl1.noarch.rpm
Description: 野鳥(YaTeX) - Yet Another TeX mode for Emacs
 YaTeX(野鳥)とは、EmacsでLaTeXソースを書くときに生ずる手間を軽減
 してくれる、LaTeX 入力支援環境です。

使い方

さまざまな機能がありますので、まずは少しだけ。

補完

*section型

C-c s

*begin型

C-c b

ソースのサンプル

ヘッダー部分に用途別に追加してみました.テンプレートとしても使えるかもしれません.

%% -*- coding: iso-2022-jp-unix -*-
%#!platex -src hogehoge
% #!platex -src hogehoge && dviout -1 -Set=!m hogehoge.dvi 
% #!platex -src hogehoge && xdvi -nopostscript -expert -geo 512x718-0+0 hogehoge.dvi
% #!pdfclose --file hogehoge.pdf && platex hogehoge && dvipdfmx hogehoge.dvi && pdfopen --file hogehoge.pdf
%#LPR dvipdfmx hogehoge.dvi && acroread /p hogehoge.pdf
% #LPR dvipsk hogehoge.dvi | lpr
\documentclass{jsarticle}
\begin{document}
Welcom to YaTeX World!
\end{document}
%%% Local Variables: 
%%% TeX-master: "hogehoge"
%%% End: 

pdfでの印刷が多くなってきている!?ようなので,LPRもpdfに対応させてみました.パスの通ったところに,acroread.batというファイル名で以下のスクリプトを保存します.

@echo off
REM USAGE: acroread.bat [options] filename
"C:\Program Files\Adobe\Acrobat 7.0\Reader\AcroRd32.exe" %1 %2 %3 %4 %5 %6 &7 %8 %9 

.emacs見せてください。

あくまで一例です。ぜひ修正、加筆お願いします。

*.texで自動的にYaTeXモード

(setq auto-mode-alist
      (cons (cons "\\.tex$" 'yatex-mode) auto-mode-alist))
(autoload 'yatex-mode "yatex" "Yet Another LaTeX mode" t)

TeX typeset

(setq tex-command "platex")

dvi preview

(setq dvi2-command "xdvi -paper us")

Kanji code

;;;   1=Shift JIS
;;;   2=JIS
;;;   3=EUC
;;;   4=UTF-8
(setq YaTeX-kanji-code 3)

use LaTeX2e and AMS-LaTeX

(setq YaTeX-use-LaTeX2e t)
(setq YaTeX-use-AMS-LaTeX t)

font latex hook

(add-hook 'yatex-mode-hook
         '(lambda () (require 'font-latex)
            (font-latex-setup))) 

RefTeX mode

(add-hook 'yatex-mode-hook '(lambda () (reftex-mode t)))

auto fill mode

(add-hook 'yatex-mode-hook '(lambda () (auto-fill-mode t) (setq fill-column 70)))

color

;(setq YaTeX-use-font-lock t)
; section color
;(setq YaTeX-hilit-sectioning-face '(light時のforecolor/backcolor dark時の forecolor/backcolor))
;(setq YaTeX-hilit-sectioning-face '(white/snow3 snow1/snow3))
(add-hook 'yatex-mode-hook
'(lambda () (require 'font-latex)
            (font-latex-setup)
            (progn
              (modify-syntax-entry ?% "<" (syntax-table))
              (modify-syntax-entry 10 ">" (syntax-table))
              (make-variable-buffer-local 'outline-level)
              (setq outline-level 'latex-outline-level)
              (make-variable-buffer-local 'outline-regexp)
              (setq outline-regexp
                    (concat "[  \t]*\\\\\\(documentstyle\\|documentclass\\|chapter\\|"
                           "section\\|subsection\\|subsubsection\\|paragraph\\)"
                            "\\*?[ \t]*[[{]")
                    ))))

outline-minor-mode

(add-hook 'yatex-mode-hook '(lambda () (outline-minor-mode t)))
(setq-default outline-level 'outline-level)
(defun latex-outline-level ()
  (save-excursion
    (looking-at outline-regexp)
    (let ((title (buffer-substring (match-beginning 1) (match-end 1))))
      (cond ((equal (substring title 0 4) "docu") 20)
            ((equal (substring title 0 4) "para") 15)
            ((equal (substring title 0 4) "chap") 0)
            ((equal (substring title 0 4) "appe") 0)
            (t (length title))))))

misc mode

(add-hook 'yatex-mode-load-hook
          (function
           (lambda ()
             (YaTeX-define-key "w" 'sdic-describe-word)
             (YaTeX-define-key "\C-w" 'YaTeX-switch-mode-menu)))) 

math-sign の追加

(setq
 YaTeX-math-sign-alist-private
 '(
   ("q"         "Q"          "(Q)")
   ("z"         "Z"          "ZZ")
   ("t""text""text")
   ("qu"        "quad"         "__")
   ("qq"        "qquad"         "____")
   ("ls"        "varlimsup"     "___\nlim")
   ("li"        "varliminf"     "lim\n---")
   ("il"        "varinjlim"     "lim\n-->")
   ("pl"        "varprojlim"    "lim\n<--")
   ("st"        "text{ s.t. }" "s.t.")
   ("bigop"     "bigoplus"      "_\n(+)~")
   ("bigot"     "bigotimes"     "_\n(x)\n ~")
   ))

dvipdfmxの追加

; dviからpdfを作成する%sはファイル名
(setq dviprint-command-format "dvipdfmx %s")

latexmkを使う場合

(setq tex-command "latexmk -dvi")

mendexの指定

(setq makeindex-command "mendex")

テンプレート

; ~/.LaTeX-templateは新規ファイル作成時に自動挿入するファイル名
(setq YaTeX-template-file "~/.LaTeX-template")

YaTeXの設定例 for Meadow

;;;; YaTeX (野鳥)
;; yatex-mode を起動させる設定
(setq auto-mode-alist 
      (cons (cons "\\.tex$" 'yatex-mode) auto-mode-alist))
(autoload 'yatex-mode "yatex" "Yet Another LaTeX mode" t)
;; LaTeX コマンド、プレビューワ、プリンタなどの設定
(setq tex-command "platex"
      dvi2-command "dviout -1 -Set=!m"
      dviprint-command-format "dvipsk %s | lpr"
      YaTeX-kanji-code 1   ; (1 SJIS, 2 JIS, 3 EUC) JIS(junet-unix)だとOS依存せずにコンパイルできる
      YaTeX-latex-message-code 'sjis  ; 改行に ^M がつかないようにする
      section-name "documentclass"
      makeindex-command "mendex"
      YaTeX-use-AMS-LaTeX t   ; AMS-LaTeXを使う
      YaTeX-use-LaTeX2e t     ; LaTeX2eを使う
      YaTeX-use-font-lock t   ; 色付け
      )
;; 自動改行を無効
(add-hook 'yatex-mode-hook'(lambda ()(setq auto-fill-function nil)))

\textit{...}など対するフォント変更

なぜか,\textbf{...}以外の\textXX{...}のフォント変更がうまく働いていないようなので少々.emacsに追加。ついでに\emph{...}にも対応。

;ここはすでにyatex19.elに記述されてる
;(add-to-list 'YaTeX-hilit-patterns-alist
;      '(YaTeX-19-region-section-type "\\\\textbf\\>" bold))
(add-to-list 'YaTeX-hilit-patterns-alist
	     '(YaTeX-19-region-section-type "\\\\textgt\\>" bold))
(add-to-list 'YaTeX-hilit-patterns-alist
	     '(YaTeX-19-region-section-type "\\\\textit\\>" italic))
(add-to-list 'YaTeX-hilit-patterns-alist
	     '(YaTeX-19-region-section-type "\\\\textsl\\>" italic))
(add-to-list 'YaTeX-hilit-patterns-alist
	     '(YaTeX-19-region-section-type "\\\\emph\\>" italic))
(add-to-list 'YaTeX-hilit-patterns-alist
	     '(YaTeX-19-region-section-type "\\\\texttt\\>" tt))

その他(改造など)

includegraphicsにclipオプションを追加

yatexadd.elのYaTeX:includegraphicsの最後を下記のように変更

(if (string= "" str) "[clip]"
     (concat "[" str ",clip]")) ;

コンパイルプログラムの使い分け

普段はplatexを使っていても、投稿先のスタイルシートによってはpdflatexを前提としているものがある。TeXソースの先頭行に例えば、

%#!pdflatex

と書いておくと、普段はC-c tjを押下してplatexで処理されていても、この場合だけpdflatexで処理してくれる。

記述例をいくつかあげると、Windowsでは、

%#!platex -src hogehoge && dviout -1 -Set=!m hogehoge.dvi 

としたり、Linux/UNIXでは、

%#!platex -src hogehoge && xdvi -nopostscript -expert -geo 512x718-0+0 hogehoge

としたりできます。

文字コードにUnicodeを追加

通常 YaTeX には EUC-JP, ISO-2022-JP (JISコード), Shift_JIS の3つの文字コード(文字符号化方式)が設定されている(“setq YaTeX-kanji-code” で指定)。Omega などで多言語混在文書を作成する際に有用であると思われるので、YaTeX で Unicode (UTF-8) を扱えるようにする。なお、Emacs で Unicode テキストを扱うには Mule-UCS パッケージが必要である。

yatexlib.elの35行目近辺からの

(defvar YaTeX-kanji-code-alist ...

に他の文字コードについての設定があるので、それに倣って

'(4 . *utf-8*)

を追加する。その下に

(YaTeX-emacs-20...

という分岐(elispは詳しくないのでどなたかわかりやすい表現に直してください)があり、そちらも文字コードの設定がなされているので同様に

'(4 . utf-8-dos); 改行コードは適当に

を追加する。これで文字コードの追加ができた。必要ならばバイトコンパイルする。あとは.emacsファイルなどで

(setq YaTeX-kanji-code 4)

とすればTeX関連のファイルがUTF-8で保存されるようになる。なお、yahtml.elにも同様の設定をおこなうことで、HTMLファイルもUnicodeで作成できる。


Last-modified: 2009-02-20 (金) 19:53:14 (354d)