Emacsのorg-modeで論文を書く(その1:pdfとhtmlへの出力)

Pyramide du Louvr

私がEmacsを使用している理由の一番大きなものはorg-modeである.あらゆる文書作成にorg-modeを用いている.org-modeを使って論文を書くことに関しては,ググってもらえばおわかりのように,ネット上に山のように情報が存在する.「屋上屋を架してどうする」と言う自分の中の声を押し殺し,あくまで備忘録ということで,あえてここにまとめておく.なお,私はGTDのツールとしてはorg-modeを全く使用していないので,その種の情報はここにはまったくないことをお断りしておく.

Table of Contents

目的

  1. org-modeからlatex経由で,文献がnumberingされ文献リストも付いたpdfを出力できるようにする
  2. org-modeから,文献がnumberingされ文献リストも付いたhtmlを出力できるようにする
  3. org-modeから,文献がnumberingされ文献リストも付いたwordファイルを出力できるようにする

org-modeで論文を書く利点

  • LaTeXのややこしいコマンドを覚えなくても普通に文章を書いていけば,pdfで出力できる.
  • latexの力を借りることで,文献の引用やリストの作成を自動化できる.
  • 必要なら,htmlとしても出力できる.
  • どうしても必要なら,pandocの力を借りて,なんとMicrosoft Wordのファイルとしても出力できてしまう.

org-modeの設定・セットアップ(pdfとhtmlへの出力用)

設定が最もよくまとまっているのはTeX Wiki Emacs/Org mode 設定例のmacOSの部分である.正統派の方は,こちらを参考にしていただきたい.

私は,koma-script – A bundle of versatile classes and packagesTufte-LaTeX を気に入っており,ほぼこれらしか使わないので,その設定を書いておく.その前に少し情報をまとめておく.

koma-script – A bundle of versatile classes and packages

Tufte-LaTeX

  • 参考サイト1: tufte-org-mode
  • Edward R. Tufteによって作られたページレイアウト.典型的には文章が左側に配置され,右側には広いマージンがありノート,文献,表,図などが配置されるスタイルである.こういうスタイルはよく見かけるものだと思うが,作者がはっきりしているとは,恥ずかしながら全く知らなかった.
  • tufte-org-modeはこのtufte classをorg-modeから使えるようにした有り難いパッケージである.

org-bullet

org-modeのinit.elの設定(pdf出力用)

  • 前述のごとく,koma-scriptとTufte-LaTeXについて設定する.

  • 何回もしつこいようだが,これも以前の記事(Emacsの設定(その2)設定ファイル(init.el)をorg-modeで管理する)で説明したように,init.orgに書いたものから生成されたinit.elである.

    (require 'ox-latex)
    (add-to-list 'auto-mode-alist '("\\.org$" . org-mode))
    (setq org-latex-default-class "bxjsarticle")
    
    (add-to-list 'org-latex-classes
                 '("koma-article"
                   "\\documentclass{scrartcl}"
                   ("\\section{%s}" . "\\section*{%s}")
                   ("\\subsection{%s}" . "\\subsection*{%s}")
                   ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
                   ("\\paragraph{%s}" . "\\paragraph*{%s}")
                   ("\\subparagraph{%s}" . "\\subparagraph*{%s}")))
    
    (add-to-list 'org-latex-classes
                 '("koma-jarticle"
                   "\\documentclass{scrartcl}
                   \\usepackage{amsmath}
                   \\usepackage{amssymb}
                   \\usepackage{xunicode}
                   \\usepackage{fixltx2e}
                   \\usepackage{zxjatype}
                   \\usepackage[hiragino-dx]{zxjafont}
                   \\usepackage{xltxtra}
                   \\usepackage{graphicx}
                   \\usepackage{longtable}
                   \\usepackage{float}
                   \\usepackage{wrapfig}
                   \\usepackage{soul}
                   \\usepackage{hyperref}"
                   ("\\section{%s}" . "\\section*{%s}")
                   ("\\subsection{%s}" . "\\subsection*{%s}")
                   ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
                   ("\\paragraph{%s}" . "\\paragraph*{%s}")
                   ("\\subparagraph{%s}" . "\\subparagraph*{%s}")))
    
    ;; tufte-handout class for writing classy handouts and papers
    (add-to-list 'org-latex-classes
                 '("tufte-handout"
                   "\\documentclass[twoside,nobib]{tufte-handout}
                                     [NO-DEFAULT-PACKAGES]
                    \\usepackage{zxjatype}
                    \\usepackage[hiragino-dx]{zxjafont}"
                   ("\\section{%s}" . "\\section*{%s}")
                   ("\\subsection{%s}" . "\\subsection*{%s}")))
    ;; tufte-book class
    (add-to-list 'org-latex-classes
                 '("tufte-book"
                   "\\documentclass[twoside,nobib]{tufte-book}
                                    [NO-DEFAULT-PACKAGES]
                     \\usepackage{zxjatype}
                     \\usepackage[hiragino-dx]{zxjafont}"
                   ("\\part{%s}" . "\\part*{%s}")
                   ("\\chapter{%s}" . "\\chapter*{%s}")
                   ("\\section{%s}" . "\\section*{%s}")
                   ("\\subsection{%s}" . "\\subsection*{%s}")
                   ("\\paragraph{%s}" . "\\paragraph*{%s}")))
    
  • 私はxelatexを使っているので,compileは以下のように設定している.

    (setq org-latex-pdf-process
          '("xelatex -interaction nonstopmode -output-directory %o %f"
            "bibtex %b"
            "xelatex -interaction nontopmode -output-directory %o %f"
            "xelatex -interaction nonstopmode -output-directory %o %f"))
    
  • ここまでEmacsを設定した上で,orgで原稿を書き,C-c C-eと打てば,以下のような画面になる.なお,pandocやTufteの項は別途記事にするので,とりあえずは無視してほしい.

  • pdfで出力したければ,さらに,l o と打つと,As PDF file and openを選択したことになり,原稿がpdfとして出力され,かつ,skimでそのpdfがオープンされる.

  • 同じく,htmlで出力したければ,h o と打つと,As HTML file and openを選択したことになり,ブラウザーでそのhtmlがオープンされる.

「org-modeで論文を書く」の実例

  • それでは実例を示してみる.以下のような書類を作成し,hogefuga.orgとして保存する.hoge_fuga.jpgはorg fileと同じdirectoryにあるものとする.
  • 前半の#で始まる行が続く部分はorg-modeの設定であり,latexのこのパッケージを使うぞ,とか,org-modeのヘッダーをどの深さまで表示するかなどを決めている.詳細はググればすぐに分かるので略…..(^^;;;
#+LaTeX_CLASS: koma-jarticle
#+LaTeX_CLASS_OPTIONS: [12pt]
#+LATEX_HEADER: \usepackage{geometry}
#+LATEX_HEADER: \geometry{left=1in,right=1in,top=1in,bottom=1in}
#+LaTeX_HEADER: \usepackage[sort,compress,super,comma]{natbib}
#+STARTUP:  overview
#+STARTUP:  hidestars
#+OPTIONS:   H:4 num:nil toc:nil \n:nil @:t ::t |:t ^:t -:t f:t *:t TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc
#+OPTIONS: date:nil
#+LINK_UP:
#+LINK_HOME:

#+TITLE: hoge/fugaによる相補的な治療における高難度症例の治療と成績
#+AUTHOR: taipapa, 織田信長, 豊臣秀吉, 徳川家康
\vspace*{-1.5cm}

\hspace{2.5cm} hogefuga大学大学院 hogefuga研究科 hogefuga分野

* 背景と目的
hogeとfugaを比較してみると一方で難易度の高い症例でも他方では容易に行える場合も多い当施設では一方に片寄ることなくhogeとfugaを相補的に用いることにより合併症の減少を目指す方針をとっているそこで自験例から高難度のhogefuga症例についての方針と成績を主にhogefuga surgeonの立場から検討した
* 結果
hogefuga症例の画像である (*Fig. [[hoge_fuga]]*)

#+NAME: hoge_fuga
#+caption: hoge-fuga重症例である
#+attr_latex: :float t :width 3in  :align center
#+ATTR_HTML: :width 500  :float: wrap :align center
[[./hoge_fuga.jpg]]

* 結論
hogefugaによる治療は有効である
  • ついで,前述のごとく,Emacsでこの文書を開いた状態で,C-c C-e l oと打てば,以下のようなpdfがskimで開かれる.

  • また,C-c C-e h oと打てば,以下のようなhtmlがbrowserで開かれる.latexのコマンドが見えてしまっているのがご愛嬌だが,htmlにしか出力しないのであれば,削除すればよい.

  • 長くなったので,ここまでとし,文献の引用の設定は次回の記事にまとめることとする.

Avatar
taipapa
本人ではありません (^^)

Related

Next
Previous
comments powered by Disqus