emacs org-latex-export-to-pdf 설정 절차
목적
emacs의 org-mode에서 M-x org-latex-export-to-pdf (C-c C-e l p) 한 번에 다음과 같은 PDF를 생성할 수 있도록 구축한다.
설정 절차
환경 정보
환경 정보
소스 코드에 색칠하기 (신택스 하이라이트)는 minted을 사용하기 때문에 파이썬 Pygments도 설치한다. 설치 절차를 간소화하기 위해 가능한 한 비어 있는 OS에 각 프로그램을 디폴트로 그대로 설치한다(Anaconda 등을 사용하지 않도록 써 둔다). 또, 장래를 생각해 emacs26, Python3 의 구축으로 했지만, 매일의 운용은 emacs 25, Python2 로 실시하고 있다 (init.el 는 그대로 움직인다).
TeX Live 2018 설치
[.wgetrc]의 내용은 다음과 같습니다.
http_proxy=http://proxy.example.net:8080
ftp_proxy=http://proxy.example.net:8080
use_proxy=on
Python 설치
다음을 수행하십시오 2
PS > .\pip.exe install pygments [email protected]:port
emacs 설치
init.el 설정
; -*- Mode: Emacs-Lisp ; Coding: utf-8 -*-
;; PATHを追加
(setenv "PATH"
(concat
"C:/texlive/2018/bin/win32;"
"C:/Users/Administrator/AppData/Local/Programs/Python/Python37/Scripts;"
(getenv "PATH")))
(setq exec-path (parse-colon-path (getenv "PATH")))
;; babel の中で tab が ^^I に変換されてしまうので、スペースにする
(setq-default tab-width 4 indent-tabs-mode nil)
(require 'ox-latex)
;;; 勝手に入力される \hypersetup{} は使わない(usepackage の順序依存に配慮)
(setq org-latex-with-hyperref nil)
(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-latex-pdf-process
'("platex -shell-escape %f"
"platex -shell-escape %f"
"pbibtex %b"
"platex -shell-escape %f"
"platex -shell-escape %f"
"dvipdfmx %b.dvi"))
(setq org-latex-title-command "\\maketitle")
(setq org-latex-toc-command
"\\tableofcontents\n")
(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-export-latex-listings t)
(setq org-latex-listings 'minted)
(setq org-latex-minted-options
'(("frame" "lines")
("framesep=2mm")
("linenos=true")
("baselinestretch=1.2")
("fontsize=\\footnotesize")
("breaklines")
))
;; class は自分で再定義
;; NO-DEFAULT-PACKAGES で勝手に入る package を抑制
;; (上記のように org-latex-packages-alist で定義すべきかも?)
(add-to-list 'org-latex-classes
'("myjsarticle"
"\\documentclass{jsarticle}
[NO-DEFAULT-PACKAGES]
\\usepackage[dvipdfmx]{graphicx}
\\usepackage[dvipdfmx]{color}
\\usepackage[dvipdfmx]{hyperref}
\\usepackage{pxjahyper}"
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}")
("\\paragraph{%s}" . "\\paragraph*{%s}")
("\\subparagraph{%s}" . "\\subparagraph*{%s}")))
샘플
예를 들어, 다음과 같은 텍스트 파일을 작성해, C-c C-e l p 라고 하면 서두의 PDF 를 일발로 작성할 수 있다 (emacs.png 는 어디로부터 따로 둘 것).
#+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:t toc:t todo:t |:t
#+TITLE: org-emacs-latex-template
#+DATE: \today
#+AUTHOR: clothoid
#+EMAIL: clothoid@silverstone
#+LANGUAGE: ja
#+SELECT_TAGS: export
#+EXCLUDE_TAGS: noexport
#+CREATOR: Emacs 26.1 (Org mode 9.1.9)
#+LATEX_CLASS: myjsarticle
#+LATEX_CLASS_OPTIONS: [12pt,a4paper,notitlepage]
#+LATEX_HEADER: \usepackage{amsfonts}
#+LATEX_HEADER: \usepackage{amsmath}
#+LATEX_HEADER: \usepackage[normalem]{ulem}
#+LATEX_HEADER: \usepackage{textcomp}
#+LATEX_HEADER: \usepackage{minted}
#+LATEX_HEADER: \usemintedstyle{emacs}
#+LATEX_HEADER: \usepackage{booktabs}
#+LATEX_HEADER: \usepackage{longtable}
#+LATEX_HEADER: \usepackage{wrapfig}
#+LATEX_HEADER_EXTRA:
#+DESCRIPTION: org template for exporting pdf with latex
#+KEYWORDS: org latex platex
#+SUBTITLE: This is sub title
#+LATEX_COMPILER: dvipdfmx
* はじめに
近年、○○が注目を集めている。
* 文字の装飾
文字を装飾する記法もいくつか用意されています。
- *太字 abc*
- /斜体 abc/
- _下線付き abc_
- +取消線付き acb+
- =コード abc=
- ~等幅 abc~
* リスト
1. January
- 元旦
- 成人の日
2. Feburuary
- 建国記念の日
* 引用
以下は引用です。
#+BEGIN_QUOTE
すべてをできる限りシンプルにせよ.
ただしそれ以上はシンプルにするな. -- アインシュタイン
#+END_QUOTE
* テーブル
#+ATTR_LaTeX: align=|l|r|r|r|r|r|
|----------+----+----+----+----+------|
| | Q1 | Q2 | Q3 | Q4 | 合計 |
|----------+----+----+----+----+------|
| パソコン | 30 | 0 | 50 | 0 | 80 |
| ソフト | 5 | 15 | 20 | 3 | 43 |
| 通信 | 2 | 2 | 2 | 2 | 8 |
|----------+----+----+----+----+------|
| 合計 | 37 | 17 | 72 | 5 | 131 |
|----------+----+----+----+----+------|
* 数式
** 文中
$\sum_{i=1}^n a_i x_i \ge b$ の時
** ブロック
\begin{eqnarray*}
x & = & \sqrt{\frac{a}{b}}
\end{eqnarray*}
* プログラムソース
#+BEGIN_SRC c++
#include <iostream>
int main(int argc, char** argv)
{
std::cout << "Hello, world." << std::endl;
return 0;
}
#+END_SRC
* 画像
#+ATTR_LATEX: :float wrap :width 0.16\textwidth :placement :options angle=90
file:emacs.png
Lorem ipsum dolor sit amet, consectetur adipiscing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident,
sunt in culpa qui officia deserunt mollit anim id est laborum.
* 脚注
これは脚注です[fn:fntest]
* Footnotes
[fn:fntest] これは脚注です
덤
Python이 불필요한 listings 을 이용한 경우의 init.el 의 참고예(lualatex 를 이용에 주의).
; -*- Mode: Emacs-Lisp ; Coding: utf-8 -*-
(require 'ox-latex)
;; PATHを追加
(setenv "PATH"
(concat
"C:/texlive/2018/bin/win32;"
(getenv "PATH")))
(setq exec-path (parse-colon-path (getenv "PATH")))
(setq org-latex-listings 'listings)
(setq org-latex-listings-options
'(
("frame" "single")
("breaklines" "true")
("basicstyle" "\\footnotesize")
("numbers" "left")
("numberstyle" "\\tiny")
))
(setq org-latex-pdf-process
'("lualatex --draftmode %f"
"lualatex %f"))
(add-to-list 'org-latex-classes
'("myjsarticle"
"
\\documentclass[10pt,a4paper, oneside, openany]{ltjsarticle}
\\usepackage{luatexja-fontspec}
\\setmainfont{IPAexMincho}
\\setsansfont{IPAexGothic}
\\setmainjfont[BoldFont=IPAexGothic]{IPAexMincho}
\\setsansjfont{IPAexGothic}
\\newjfontfamily\\jisninety[CJKShape=JIS1990]{IPAexMincho}
[NO-DEFAULT-PACKAGES]
\\usepackage{graphicx}
\\usepackage{booktabs}
\\usepackage{longtable}
\\usepackage{wrapfig}
\\usepackage{hyperref}
\\urlstyle{sf}
\\usepackage{enumitem}
\\setlist[itemize]{font={\\bfseries\\jisninety}}
\\setlist[itemize,2]{font={\\bfseries\\jisninety}}
\\makeatletter
\\makeatother
\\hypersetup{pdfencoding=auto}"
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}")
("\\paragraph{%s}" . "\\paragraph*{%s}")
("\\subparagraph{%s}" . "\\subparagraph*{%s}")))
참고
#+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:t toc:t todo:t |:t
#+TITLE: org-emacs-latex-template
#+DATE: \today
#+AUTHOR: clothoid
#+EMAIL: clothoid@silverstone
#+LANGUAGE: ja
#+SELECT_TAGS: export
#+EXCLUDE_TAGS: noexport
#+CREATOR: Emacs 26.1 (Org mode 9.1.9)
#+LATEX_CLASS: myjsarticle
#+LATEX_CLASS_OPTIONS: [12pt,a4paper,notitlepage]
#+LATEX_HEADER: \usepackage{amsfonts}
#+LATEX_HEADER: \usepackage{amsmath}
#+LATEX_HEADER: \usepackage[normalem]{ulem}
#+LATEX_HEADER: \usepackage{textcomp}
#+LATEX_HEADER: \usepackage{minted}
#+LATEX_HEADER: \usemintedstyle{emacs}
#+LATEX_HEADER: \usepackage{booktabs}
#+LATEX_HEADER: \usepackage{longtable}
#+LATEX_HEADER: \usepackage{wrapfig}
#+LATEX_HEADER_EXTRA:
#+DESCRIPTION: org template for exporting pdf with latex
#+KEYWORDS: org latex platex
#+SUBTITLE: This is sub title
#+LATEX_COMPILER: dvipdfmx
* はじめに
近年、○○が注目を集めている。
* 文字の装飾
文字を装飾する記法もいくつか用意されています。
- *太字 abc*
- /斜体 abc/
- _下線付き abc_
- +取消線付き acb+
- =コード abc=
- ~等幅 abc~
* リスト
1. January
- 元旦
- 成人の日
2. Feburuary
- 建国記念の日
* 引用
以下は引用です。
#+BEGIN_QUOTE
すべてをできる限りシンプルにせよ.
ただしそれ以上はシンプルにするな. -- アインシュタイン
#+END_QUOTE
* テーブル
#+ATTR_LaTeX: align=|l|r|r|r|r|r|
|----------+----+----+----+----+------|
| | Q1 | Q2 | Q3 | Q4 | 合計 |
|----------+----+----+----+----+------|
| パソコン | 30 | 0 | 50 | 0 | 80 |
| ソフト | 5 | 15 | 20 | 3 | 43 |
| 通信 | 2 | 2 | 2 | 2 | 8 |
|----------+----+----+----+----+------|
| 合計 | 37 | 17 | 72 | 5 | 131 |
|----------+----+----+----+----+------|
* 数式
** 文中
$\sum_{i=1}^n a_i x_i \ge b$ の時
** ブロック
\begin{eqnarray*}
x & = & \sqrt{\frac{a}{b}}
\end{eqnarray*}
* プログラムソース
#+BEGIN_SRC c++
#include <iostream>
int main(int argc, char** argv)
{
std::cout << "Hello, world." << std::endl;
return 0;
}
#+END_SRC
* 画像
#+ATTR_LATEX: :float wrap :width 0.16\textwidth :placement :options angle=90
file:emacs.png
Lorem ipsum dolor sit amet, consectetur adipiscing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Duis aute irure dolor in reprehenderit in voluptate velit
esse cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident,
sunt in culpa qui officia deserunt mollit anim id est laborum.
* 脚注
これは脚注です[fn:fntest]
* Footnotes
[fn:fntest] これは脚注です
Python이 불필요한 listings 을 이용한 경우의 init.el 의 참고예(lualatex 를 이용에 주의).
; -*- Mode: Emacs-Lisp ; Coding: utf-8 -*-
(require 'ox-latex)
;; PATHを追加
(setenv "PATH"
(concat
"C:/texlive/2018/bin/win32;"
(getenv "PATH")))
(setq exec-path (parse-colon-path (getenv "PATH")))
(setq org-latex-listings 'listings)
(setq org-latex-listings-options
'(
("frame" "single")
("breaklines" "true")
("basicstyle" "\\footnotesize")
("numbers" "left")
("numberstyle" "\\tiny")
))
(setq org-latex-pdf-process
'("lualatex --draftmode %f"
"lualatex %f"))
(add-to-list 'org-latex-classes
'("myjsarticle"
"
\\documentclass[10pt,a4paper, oneside, openany]{ltjsarticle}
\\usepackage{luatexja-fontspec}
\\setmainfont{IPAexMincho}
\\setsansfont{IPAexGothic}
\\setmainjfont[BoldFont=IPAexGothic]{IPAexMincho}
\\setsansjfont{IPAexGothic}
\\newjfontfamily\\jisninety[CJKShape=JIS1990]{IPAexMincho}
[NO-DEFAULT-PACKAGES]
\\usepackage{graphicx}
\\usepackage{booktabs}
\\usepackage{longtable}
\\usepackage{wrapfig}
\\usepackage{hyperref}
\\urlstyle{sf}
\\usepackage{enumitem}
\\setlist[itemize]{font={\\bfseries\\jisninety}}
\\setlist[itemize,2]{font={\\bfseries\\jisninety}}
\\makeatletter
\\makeatother
\\hypersetup{pdfencoding=auto}"
("\\section{%s}" . "\\section*{%s}")
("\\subsection{%s}" . "\\subsection*{%s}")
("\\subsubsection{%s}" . "\\subsubsection*{%s}")
("\\paragraph{%s}" . "\\paragraph*{%s}")
("\\subparagraph{%s}" . "\\subparagraph*{%s}")))
참고
각주
1 커맨드 라인 옵션으로 -no-persistent-downloads를 붙이면 빨라지는 것 같다 (미확인)
2 [pip.exe]는 [C:/Users/Administrator/AppData/Local/Programs/Python/Python37/Scripts]에 있습니다.
3 수중 환경에서 이 버그
Reference
이 문제에 관하여(emacs org-latex-export-to-pdf 설정 절차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/clothoid/items/0a8f825ae19150fe5750
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(emacs org-latex-export-to-pdf 설정 절차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/clothoid/items/0a8f825ae19150fe5750텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)