Overleaf + pandoc での実際

全体的な参照URLなどは「Overleaf + pandoc」。

4年前

4年前にOverleafで実験したときに、次がコンパイルは通った。

\documentclass[a4paper]{bxjsarticle}  
\usepackage{zxjatype}
\usepackage[ipa]{zxjafont}

\title{タイトル}
\author{著者}
\date{\today} % 今日の日付になる


\begin{document}
\maketitle
\tableofcontents

\section{節の見出し}

ここに段落。こんにちはこんにちは!

次の段落。

さらに次の段落。

\section{次の節の見出し}

\end{document}
  • bxjsarticle につては、今風なLaTeXに関するメモ
  • zx は XeLaTeX を意味してるらしい。Overleaf のデフォルトエンジンは XeLaTeX
  • latexmkrcは書いてない。つまり、Overleafの設定には何も変更を加えない。
  • 目次はスカスカになってしまう。
  • 段落のあいだはアキがない。読みにくい。
  • ZXjafont パッケージ に解説。
  • zxjafont パッケージ(v1.3) がマニュアル。
テンプレートとinput

MarkdownとPandocを用いた簡易Latex環境の構築 (2013年10月16日 -- 2018年03月12日) をもとに変更。

\documentclass[a4paper]{bxjsarticle}  
\usepackage{zxjatype}
\usepackage[ipa]{zxjafont}
\usepackage{amsmath,amssymb}
\usepackage{graphicx}
% \usepackage{bm} % bold math の \bm{...} が使いたいとき
% \usepackage{ascmac} % pLaTeXの標準付属パッケージ、おそらく XeLaTeX ではダメだろう
\usepackage[dvipdfm]{hyperref} % hypererf は欲しいが、[dvipdfm] オプションはどうだろう?

\title{タイトル}
\author{著者}
\date{\today} % 今日の日付になる


\begin {document}
\maketitle

\input {article.tex}

\end{document}

本文を article.tex に分離する。

\section{節の見出し}

ここに段落。こんにちはこんにちは!

次の段落。

さらに次の段落。

\section{次の節の見出し}
XeLaTeX はやめた

XeLaTeX で日本語する件について を見ると茨の道のような気がする。あきらめる。

Overleafのブランク・プロジェクトに、次の mklatexrc を設定をする。

$latex = 'uplatex';
$bibtex = 'upbibtex';
$dvipdf = 'dvipdfmx %O -o %D %S';
$makeindex = 'mendex -U %O -o %D %S';
$pdf_mode = 3; 

次の例文を表示させたい。

\textbf{ゼータ関数}(zeta function)とは:

\begin{equation}                     % 数式中の漢字
\zeta(s) \stackrel{定義}{=} \sum_{n=1}^\infty \frac{1}{n^s}
= \prod_{p\colon 素数}\frac{1}{1-p^{-s}}
\end{equation}

それとハイパーリンクは使いたい。

\usepackage[colorlinks=true, allcolors=blue]{hyperref}

手順:

  1. Blank Project を作る。
  2. コンパイラの設定を LaTeX にする。pdfLaTex や XeLaTeX ではダメ。
  3. 上記の mklatexrc を作る。

とりあえず次を試す。

\documentclass[uplatex]{jsarticle}
% \documentclass[a4paper]{bxjsarticle}

\usepackage{amsmath}
\usepackage{graphicx}
\usepackage[colorlinks=true, allcolors=blue]{hyperref}

\title{タイトル}
\author{著者}
\date{\today} % 今日の日付になる


\begin{document}
\maketitle
\tableofcontents

\section{節の見出し}

ここに段落。こんにちはこんにちは!

次の段落。

さらに次の段落。

\section{次の節の見出し}

\end{document}

これはOK。

\documentclass[a4paper]{bxjsarticle} に変更するとダメなで、今風なLaTeXに関するメモ に従い、

\documentclass[autodetect-engine,dvipdfmx-if-dvi,ja=standard,a4paper]{bxjsarticle}

まず、dvipdfmx-if-dvi はオブソリート。消したが次のエラー。

Class bxjsarticle Warning: A driver option is MISSING!! You should properly specify one of the valid driver options according to the DVI driver that is in use: dvips, dvipdfmx, dviout, xdvi, nodvidriver.

結局、次でコンパイルは通る。

\documentclass[autodetect-engine,dvipdfmx,ja=standard,a4paper]{bxjsarticle}

テンプレートは次のようになる。

\documentclass[autodetect-engine,dvipdfmx,ja=standard,a4paper]{bxjsarticle}

\usepackage{amsmath}
\usepackage{graphicx}
\usepackage[colorlinks=true, allcolors=blue]{hyperref}

\title{タイトル}
\author{著者}
\date{\today} % 今日の日付になる

\begin{document}
\maketitle
\tableofcontents

\input {article.tex}

\end{document}
pandoc による変換

とりあえず、

pandoc --top-level-division=section .\ソース.md -o test.tex
  1. "--top-level-division" は chapter にしたほうがよさそう。
  2. longtable を使うので、パッケージが必要。\usepackage{longtable}
  3. テーブルはセンタリングされてしまうが、まーいいだろう。
  4. “‥‥” は、``‥‥'' に変更してくれる。
  5. HTMLテーブルはタグがすべて削除される。
  6. 太字は「\textbf{‥‥}」となる。
  7. \tightlist でエラーになる。解決策は下。
  8. "Is \usepackage{booktabs} missing?" というエラーが出始めた。解決策は下。
  9. TeXコードのエラーが出たが、x_\vec{A} が許されず、x_{\vec{A}} とした。MathJax でノーエラーでも LaTeX でエラーってこともあるようだ。
  10. スタイルに article とすると、当然に \chapter はエラーとなるので、先頭の \chapter は削除する。

\tightlist でエラー は、Pandoc をアップデートしたら Markdown -> LaTeX -> PDF で失敗する に対策があった。プリアンブルに次を追加。

\def\tightlist{\itemsep1pt\parskip0pt\parsep0pt}

"Is \usepackage{booktabs} missing?" エラーは、[LaTeX] booktabs --- テーブルに横罫線を引く に対策があった。プリアンブルに次を追加。

\usepackage {booktabs}
結論

結局、テンプレートは次のようになる。

\documentclass[autodetect-engine,dvipdfmx,ja=standard,a4paper]{bxjsarticle}

\usepackage{amsmath}
\usepackage{graphicx}
\usepackage[colorlinks=true, allcolors=blue]{hyperref}
\usepackage{longtable} 
\usepackage {booktabs}

\def\tightlist{\itemsep1pt\parskip0pt\parsep0pt}

\title{タイトル}
\author{著者}
\date{\today} % 今日の日付になる


\begin{document}
\maketitle
\tableofcontents

\input {article.tex}

\end{document}

Markdownからの変換コマンドラインは、

pandoc --top-level-division=chapter .\ソース.md -o test.tex

変換後作業として:

  1. 冒頭の \chapter を削り落とす
  2. 削り落としたタイトルをメインファイル側〈テンプレート〉のtitleに入れる。

注意事項:

  • HTMLの生タグはすべて無視される。使うべきではない。
  • テーブルの見た目はだいぶ変わる。セマンティクスは同じとは言えるが。
追記: LuaLaTeX

エンジンを LuaLaTeX にした場合は次のテンプレートが使える。

\documentclass[a4paper]{ltjsarticle}
\usepackage[no-math]{fontspec}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage[unicode, pdfusetitle, colorlinks=true, allcolors=blue]{hyperref}
\usepackage{longtable} 
\usepackage {booktabs}

\def\tightlist{\itemsep1pt\parskip0pt\parsep0pt}

\title{タイトル}
\author{著者}
\date{\today}


\begin{document}
\maketitle
\tableofcontents

\input {article.tex}

\end{document}