org で minted ハイライト表示した PDF 一発作成
1 環境
- Debian GNU/Linux: 9.4 (stretch)
- GNU Emacs: 25.1.1
- Org mode version: 9.1.13
- texlive-full : 2016.20170123-5
2 texlive
~$ sudo apt install texlive-full -y
だいたい一発では入らないので、以下を何度か実行することになる。
~$ sudo apt update ~$ apt-get update –fix-missing ~$ sudo apt install texlive-full -y
3 pygmentize
~$ sudo apt install python-pygments -y
4 emacs の設定
; -*- Mode: Emacs-Lisp ; Coding: utf-8 -*- ;; babel を使用している中で tab を使うと、.tex で ^^I に変換されてしまうので、スペースを使う (setq-default tab-width 4 indent-tabs-mode nil) (require 'ox-latex) (require 'ox-bibtex) ;;; 勝手に入力さえられう \hypersetup{} は使わない (setq org-latex-with-hyperref nil) (setq org-latex-pdf-process '("platex -shell-escape %f" "platex -shell-escape %f" "dvipdfmx %b.dvi")) (add-to-list 'org-latex-packages-alist "\\hypersetup{setpagesize=false}" t) (add-to-list 'org-latex-packages-alist "\\hypersetup{colorlinks=true}" t) (add-to-list 'org-latex-packages-alist "\\hypersetup{linkcolor=blue}" t) (setq org-export-latex-listings t) (setq org-latex-listings 'minted) ;; タイトルつける場合 ;; (setq org-latex-title-command "\\maketitle") ;; 目次出力する場合 ;; (setq org-latex-toc-command ;; "\\tableofcontents\n") (setq org-latex-toc-command nil) (setq org-latex-text-markup-alist '((bold . "\\textbf{%s}") (code . verb) (italic . "\\it{%s}") (strike-through . "\\sout{%s}") (underline . "\\uline{%s}") (verbatim . protectedtexttt))) (setq org-latex-minted-options '(("frame" "lines") ("framesep=2mm") ("linenos=true") ("baselinestretch=1.2") ("fontsize=\\footnotesize") ("breaklines") )) ;; インデントすると *.tex にそのまま入ってしまう (add-to-list 'org-latex-classes '("myjsarticle" "\\documentclass{jsarticle} [NO-DEFAULT-PACKAGES] \\usepackage{amsfonts} \\usepackage{amsmath} % \\usepackage{newtxtext,newtxmath} \\usepackage[normalem]{ulem} \\usepackage{textcomp} \\usepackage{minted} \\usemintedstyle{emacs} \\usepackage[dvipdfmx]{graphicx} \\usepackage[dvipdfmx]{color} \\usepackage{booktabs} \\usepackage{longtable} \\usepackage{wrapfig} \\usepackage[dvipdfmx]{hyperref} \\usepackage{pxjahyper} % \\hypersetup{pdfencoding=auto}" ("\\section{%s}" . "\\section*{%s}") ("\\subsection{%s}" . "\\subsection*{%s}") ("\\subsubsection{%s}" . "\\subsubsection*{%s}") ("\\paragraph{%s}" . "\\paragraph*{%s}") ("\\subparagraph{%s}" . "\\subparagraph*{%s}")))
5 org mode sample
M-x org-latex-export-to-pdf で PDF を生成
#+OPTIONS: ':nil *:t -:t ::t <:t H:3 \n:nil ^:t arch:headline #+OPTIONS: author:t broken-links:nil c:nil creator:nil #+OPTIONS: d:(not "LOGBOOK") date:t e:t email:nil f:t inline:t num:t #+OPTIONS: p:nil pri:nil prop:nil stat:t tags:t tasks:t tex:t #+OPTIONS: timestamp:t title:nil toc:3 todo:t |:t #+LATEX_CLASS: myjsarticle #+LATEX_CLASS_OPTIONS: [12pt,a4paper,titlepage] #+LATEX_COMPILER: dvipdfmx * Python #+BEGIN_SRC python # fizzbuzz sample def main(): for x in xrange(1, 10): div3 = x % 3 == 0 div5 = x % 5 == 0 if div3 and div5: print 'FizzBuzz' elif div3: print 'Fizz' elif div5: print 'Buzz' else: print x if __name__ == '__main__': main() #+END_SRC
6 結果