UP | HOME

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 結果

2018-06-11-193501.jpg

7 参考

著者: clothoid

Created: 2022-08-27 Sat 17:03

Validate