概要
Pandoc(Lualatexエンジン経由)で、markdown(マークダウン)ファイルを論文PDFに変換する方法。
ただし、文系の論文で、環境はLinux(Ubuntu16.04)で、Pandoc 2.1.1。
※Pandocのバージョンによっては正しく動作しなくなる恐れがありますので、あしからず。
う〜ん、でも文系の人でLinux使っている人なんて、僕のようなよほどの変人しかいないだろうなぁ…w。
気が向いたら、Windows対応の記述も追加します…。
フォルダ内の構成
任意のフォルダ
┃
┣ 原稿.md (原稿ファイル)
┣ breakfbox.sty (TeXスタイルファイル)
┣ uline--.sty (TeXスタイルファイル)
┣ テンプレ.tex
┣ makepaper.sh (スクリプトファイル)
┣ pic/(画像フォルダ)
┣ 001.jpg
下準備 インストール編
Pandocのインストール
「There is a package installer at pandoc’s download page.」のリンク先の下の方にあるインストーラーをダウンロードして、インストール。
LaTeX(TeX Live)のインストール
リンク先を参照のこと。Windowsだとインストールに2時間近くかかる…。
下準備 設定ファイル編
TeXスタイルファイル
下線・波線などのために必要。
breakfbox パッケージから、以下の2つのファイルを入手する。
- uline--.sty
- breakfbox.sty
テンプレ.tex
テキストエディタ(メモ帳など)で下記の内容をコピペして、「テンプレ.tex」を新規作成。
\documentclass[a4paper,lualatex,ja=standard]{bxjsarticle}
%ルビ、圏点
\usepackage{luatexja-ruby}
%表
\usepackage{longtable}
\usepackage{booktabs}
%下線・波線・囲み文字 https://github.com/doraTeX/breakfbox から uline--.sty と breakfbox.sty を入手
\usepackage[usetype1]{uline--}
\usepackage{breakfbox}
%脚注番号を (1)に変更
\renewcommand\thefootnote{(\arabic{footnote})}
%脚注番号を 1)に変更
%\renewcommand\thefootnote{\arabic{footnote})}
%リンク
\usepackage[hidelinks]{hyperref}
%画像
\usepackage{graphicx}
%\usepackage[export]{adjustbox}
%画像の幅のみ指定で、画像の幅・高さの比率を維持したまま縮小する
\makeatletter
\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi}
\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi}
\makeatother
% Scale images if necessary, so that they will not overflow the page
% margins by default, and it is still possible to overwrite the defaults
% using explicit options in \includegraphics[width, height, ...]{}
\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio}
\title{$title$}
\subtitle{\vspace{10truept}{\large $subtitle$}}
\author{$author$}
\date{$date$}
\begin{document}
\maketitle
% \tableofcontents
\begin{abstract}$abstract$\end{abstract}
$body$
\end{document}
スクリプトファイル
テキストエディタ(メモ帳など)で下記の内容をコピペして、「makepaper.sh」を新規作成。
#オリジナルのmdをコピーして別名保存
cp $1.md `date +%Y%m%d-$1`.md
#オレオレ記法をTeX記法に置換
#波線
sed -i -e 's/uw{/\\uwave{/g' `date +%Y%m%d-$1`.md
sed -i -e 's/}uw/}/g' `date +%Y%m%d-$1`.md
#下線
sed -i -e 's/ul{/\\uline{/g' `date +%Y%m%d-$1`.md
sed -i -e 's/}ul/}/g' `date +%Y%m%d-$1`.md
#囲み文字
sed -i -e 's/k{/\\breakfbox{/g' `date +%Y%m%d-$1`.md
sed -i -e 's/}k/}/g' `date +%Y%m%d-$1`.md
#ルビ
sed -i -e 's/rb{/\\ruby{/g' `date +%Y%m%d-$1`.md
sed -i -e 's/}rb/}/g' `date +%Y%m%d-$1`.md
#圏点
sed -i -e 's/ten{/\\kenten{/g' `date +%Y%m%d-$1`.md
sed -i -e 's/}ten/}/g' `date +%Y%m%d-$1`.md
#pdfに変換
pandoc `date +%Y%m%d-$1`.md -o `date +%Y%m%d-$1`.pdf --pdf-engine=lualatex --template テンプレ.tex -V papersize=a4 -V classoption=jafont=ipaex
#別名保存したmdを削除
rm -f `date +%Y%m%d-$1`.md
#wordに変換。ただし、ルビの文字等が消えるので注意。
# pandoc $1.md -o `date +%Y%m%d-$1`.docx
原稿作成
以下のような感じで、「原稿.md」を作成。
なぜルビや下線などをLaTeX記法ではなく、オレオレ記法wで書いているかというと、
一つはできるだけ短い記法にしたいということと、
もう一つは、もしhtmlなどの別のファイルに変換したいときに、LaTeX記法のままだと全ての記法(例えば、\uline{下線}
や \ruby{語句}{ごく}
など)の最後が「}
」になり、僕の技量では記法ごとの置換が適切にできない(終わりを記法ごとに</span>
や<\/rt><\/ruby>
などに区別して置換したいけど、全てが}
だと難しい)ので、あえて}ul
}rb
と明示することによって、それらを</span>
<\/rt><\/ruby>
などに置換しやすいようにしている。
---
title: 論文タイトル
subtitle: サブタイトル
author: 執筆者名
date: 日付
header-includes: |
abstract: This is a pandoc test . . .
---
<!-- 書き方メモ
- 強調 *強調したい文字* ゴシックになる程度
- ルビ rb{山|﨑}{やま|さき}rb
- 圏点 ten{傍点をつけたい語句}ten
- 下線 ul{下線をつけたい文字}ul
- 波線 uw{波線をつけたい文字}uw
- 囲み文字 k{囲みたい文字}k
- 引用 >
- 画像 ![キャプション](pic/001.jpg){width=10cm}
- 脚注 本文につける[^1] [^1]:脚注を書く
- 見出しに章番号をつけたくない時 # 見出し{-}
-->
# はじめに
# 教育の目的
以下、福沢諭吉の「教育の目的」より。
> ul{教育の目的は}ul、人生を発達して極度に導くにあり。そのこれを導くは何のためにするやと尋ぬれば、uw{人類をして至大の幸福を得せしめんがためなり}uw。そのrb{至|大}{し|だい}rbの幸福とは何ぞや。ここに文字の義を細かに論ぜずして民間普通の語を用うれば、天下泰平・家内安全、すなわちこれなり。今この語の二字を取りて、かりにこれをk{平安の主義}kと名づく。人として平安を好むは、これをその天性というべきか、はた習慣というべきか。余は宗教の天然説を度外視する者なれば、天の約束というも、rb{人為}{じんい}rbの習慣というも、そのへんはこれをrb{人々}{にんにん}rbの所見にまかして問うことなしといえども、ただ平安を好むの一事にいたりては、古今人間の実際に行われてrb{違}{たが}rbうことなきを知るべきのみ。しからばすなわちten{教育の目的は平安にあり}tenというも、世界人類の社会に通用してrb{妨}{さまたげ}rbあることなかるべし。
> そもそも今日の社会に、いわゆる宗旨なり、徳教なり、政治なり、経済なり、その所論おのおのrb{趣}{おもむき}rbを一にせずして、はなはだしきはrb{相互}{あいたがい}rbにrb{背|馳}{はい|ち}rbするものもあるに似たれども、平安の一義にいたりてはrb{相違}{あいたが}rbうなきを見るべし。宗旨・徳教、何のためにするや。善を勧めて精神の平安をいたすのみ。*政治、何のためにするや。悪をrb{懲}{こ}rbらし害を防ぎて、もって心身の平安を助くるのみ。*経済、何のためにするや。人工を便利にして形体の平安を増すのみ。されば平安の主義は人生の達するところ、教育のとどまるところというも、はたして真実|rb{無|妄}{む|もう}rbなるを知るべし。
以上、青空文庫より[^1]。
[^1]:著作権の消滅した作品が読める。http://www.aozora.gr.jp/
表の作成は、このサイト(http://www.tablesgenerator.com/markdown_tables)を利用するのが便利。というか、このサイトがないと、表を作る気がしない。
Table:表の例
| Tables | Are | Cool |
|----------|:-------------:|------:|
| col 1 is | left-aligned | $1600 |
| col 2 is | centered | $12 |
| col 3 is | right-aligned | $1 |
![画像のキャプション](pic/test.jpg){width=5cm}
スクリプト実行
端末(ターミナル)で以下を実行。Lualatex経由なので、処理に時間がかかるけど、じっと我慢していると、PDFが作成される。
$ sh makepaper.sh 原稿
サンプル画像