毎日もくもく

毎日もくもく

日記,そして備忘録

Atom と LuaLaTeX と BibTeX,おまけに Inkscape

テンプレの最新版はこちら

 私には頭の良い友人がいる.その友人が LuaLaTeX のテンプレートを見せてくれたので,私も pLaTeX から LuaLaTeX に乗り換えることにした.ついでに LaTeX 関係のことも整理したので,備忘録として残す.

LuaLaTeX とは

  • スクリプト言語 Lua が使える
  • dvi ファイルを経由せずに pdf を出す
  • Unicode に対応
  • 従来よりはフォント変更が簡単(簡単とは言っていない)

 細かいことは TeX Wiki (LuaTeX)TeX Wiki (LuaTeX-ja)LuaTeX-ja プロジェクト Wiki 参照.TeX Live 2017 には最初から入っていたので特にインストール作業は必要なし.今の自分のテンプレートは(フォント関係の warning は残っているが)以下のようになっている.友人のがベース(URL を載せていいか分からず).

2017/9/22 追記:  フォント設定を変えている(txfonts は古い、amssymb を読み込む必要が(多分)ない、など)ため、後日更新する(特に usepackage の順番があっているのか分からない).続き: (続)Atom と LuaLaTeX と… - 毎日もくもく

 

\documentclass[10pt,a4paper]{ltjsarticle}       % LuaTeX を使う

\usepackage[luatex,draft]{graphicx}             % LuaTeX 用, draft がついているときは図の代わりに同じ大きさの枠ができる
\usepackage{here}                               % 図表の位置を強制して出力
\usepackage{afterpage}                          % 残っている図を貼り付ける(\afterpage{\clearpage})
\usepackage[subrefformat=parens]{subcaption}    % サブキャプション(図1(a) とか)
\usepackage{setspace}                           % 行間制御
\usepackage{ulem}                               % 下線や取り消し線など
\usepackage{booktabs}                           % きれいな表(\toprule \midrule \bottomrule)
\usepackage{multirow}                           % 表で行結合
\usepackage{multicol}                           % 表で列結合
\usepackage{hhline}                             % 表で 2 重線
\usepackage[table]{xcolor}                      % カラー
\usepackage{tikz}                               % 図描画用
\usepackage[framemethod=tikz]{mdframed}         % 文章を囲むとき用
\usepackage[version=3]{mhchem}                  % 化学式
\usepackage{siunitx}                            % 単位
\usepackage{comment}                            % コメント
\setcounter{tocdepth}{3}                        % 目次に subsubsection まで表示

% -----ヘッダ・フッタの設定-----
\usepackage{fancyhdr}
\usepackage{lastpage}
\pagestyle{fancy}
\lhead{}                                 % 左ヘッダ
\chead{}                                 % 中央ヘッダ
\rhead{}                                 % 右ヘッダ
\lfoot{}                                 % 左フッタ
\cfoot{\thepage~/~\pageref{LastPage}}    % 中央フッタ
\rfoot{}                                 % 右フッタ
\renewcommand{\headrulewidth}{0pt}       % ヘッダの罫線を消す

% -----余白の設定-----
% これをアンコメントするとページ番号が中央からずれるから今は使わない.
% \usepackage[left=19.05mm,right=19.05mm,top=25.40mm,bottom=25.40mm]{geometry}

% -----フォントの設定-----
% https://ja.osdn.net/projects/luatex-ja/wiki/LuaTeX-ja%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9
% http://myfuturesightforpast.blogspot.jp/2013/12/tex-gyre.html など
\usepackage[no-math]{fontspec}
\usepackage{amsmath,amssymb}    % 高度な数式用
\usepackage{mathrsfs}           % 花文字用
% times ベース -> txfonts
% palatino ベース -> pxfonts
\usepackage{txfonts}
\usepackage{bm}                 % 斜体太字ベクトル
% Avant Garde -> TeX Gyre Adventor
% Bookman Old Style -> TeX Gyre Bonum
% Zapf Chancery -> TeX Gyre Chorus
% Courier -> TeX Gyre Cursor
% Helvetica -> TeX Gyre Heros
% Helvetica Narrow -> TeX Gyre Heros Cn
% Palatino -> TeX Gyre Pagella
% New Century Schoolbook -> TeX Gyre Schola
% Times -> TeX Gyre Termes
\setmainfont[Ligatures=TeX]{TeXGyreTermes}
\setsansfont[Ligatures=TeX]{TeXGyreHeros}
\setmonofont[Scale=MatchLowercase]{TeXGyreCursor}
\usepackage[match,deluxe,expert,bold]{luatexja-fontspec}
\setmainjfont[BoldFont=IPAexGothic]{IPAexMincho}
\setsansjfont{IPAexGothic}
\usepackage{luatexja-otf}

% -----PDF ハイパーリンク,ブックマーク,URL の設定-----
% オプション(\hypersetup{})は https://texwiki.texjp.org/?hyperref 参照
\usepackage{hyperref}
\hypersetup{%
  luatex,%
  unicode=true,%
  hidelinks,%
  bookmarksnumbered=true,%
  bookmarksdepth=subsubsection,%
  pdfencoding=auto,%
  setpagesize=false}
\usepackage{url}

% -----ソースコードの設定-----
% オプション(\lstset{})は http://tug.ctan.org/tex-archive/macros/latex/contrib/listings/listings.pdf 参照
% 使うときは
% \begin{lstlisting}[language=aaaa,caption=bbbb,label=List:cccc]
% hogehoge
% \end{lstlisting}
\usepackage{listings}
\lstset{%
  basicstyle=\ttfamily\small,%
  frame=single,%
  frameround=ffff,%
  numbers=left,%
  stepnumber=1,%
  numbersep=1\zw,%
  breaklines=true,%
  tabsize=4,%
  captionpos=t,%
  commentstyle=\itshape}

% -----図表等の reference の設定-----
% 表示文字列を日本語化
\renewcommand{\figurename}{}
\renewcommand{\tablename}{}
\renewcommand{\lstlistingname}{リスト}
\renewcommand{\abstractname}{概要}
% 図番号等を"<章番号>.<図番号>"
% lstlisting に関しては https://tex.stackexchange.com/questions/134418/numbering-of-listings 参照
\renewcommand{\thefigure}{\thesection.\arabic{figure}}
\renewcommand{\thetable}{\thesection.\arabic{table}}
\AtBeginDocument{\renewcommand{\thelstlisting}{\thesection.\arabic{lstlisting}}}
\renewcommand{\theequation}{\thesection.\arabic{equation}}
% 節が進むごとに図番号等をリセット
% http://d.hatena.ne.jp/gp98/20090919/1253367749 参照
\makeatletter
\@addtoreset{figure}{section}
\@addtoreset{table}{section}
\@addtoreset{lstlisting}{section}
\@addtoreset{equation}{section}
\makeatother
% \ref{} の簡単化
\newcommand*{\refSec}[1]{\ref{#1}~章}
\newcommand*{\refSsec}[1]{\ref{#1}~節}
\newcommand*{\refSssec}[1]{\ref{#1}~項}
\newcommand*{\refFig}[1]{\figurename~\ref{#1}}
\newcommand*{\refTab}[1]{\tablename~\ref{#1}}
\newcommand*{\refList}[1]{\lstlistingname~\ref{#1}}
\newcommand*{\refEq}[1]{式~(\ref{#1})}

% -----数式中便利な定義-----
% https://www.library.osaka-u.ac.jp/doc/TA_LaTeX2.pdf
% https://en.wikibooks.org/wiki/LaTeX/Mathematics など
\newcommand{\e}{\mathrm{e}}                     % ネイピア数
\newcommand{\imagi}{\mathrm{i}}                 % 虚数単位(i)
\newcommand{\imagj}{\mathrm{j}}                 % 虚数単位(j)
\newcommand{\vDel}{\varDelta}                   % デルタ大文字
\newcommand{\veps}{\varepsilon}                 % イプシロン小文字
\newcommand*{\paren}[1]{\left( #1 \right)}      % () を中身の大きさに合わせる
\newcommand*{\curly}[1]{\left\{ #1 \right\}}    % {} を中身の大きさに合わせる
\newcommand*{\bracket}[1]{\left[ #1 \right]}    % [] を中身の大きさに合わせる
\renewcommand{\Re}{\operatorname{Re}}           % 実部
\renewcommand{\Im}{\operatorname{Im}}           % 虚部
\newcommand*\sfrac[2]{{}^{#1}\!/_{#2}}          % xfrac パッケージの \sfrac{}{} の代わり
\renewcommand*\vec[1]{\mathbf{#1}}              % 矢印ベクトルは使わないので上書き.太字立体.

% -----タイトル-----
\title{Lua\LaTeX テンプレート}
\author{もくもく}
\date{\today}

% -----プリアンブルここまで-----

\begin{document}
\maketitle
\thispagestyle{fancy}

hogehoge

\bibliographystyle{junsrt}
\bibliography{reference}

\end{document}

Atom で LuaLaTeX をコンパイルする

 私は Atom を使っているので,Atom で LuaLaTeX を使う際の設定を書く.以下のパッケージをインストールした.カッコ内の数字は執筆時点でのバージョンである.また私が使っている OS は Arch Linux, Debian jessie で,ともに Linux である.

Atom の左半分で tex ファイルを編集し,右半分で pdf を確認する,といった感じにする.

latex パッケージの設定

 設定画面で以下のようにする.

  • "TeX Path": /usr/local/texlive/2017/bin/x86_64-linux(本当か?)
  • "Engine": lualatex
  • "Opener": pdf-view

他はデフォルトのまま.

 デフォルトでは ctrl-alt-b でコンパイル,ctrl-alt-s で SyncTeX,ctrl-alt-c でコンパイル時にできるファイルを消してくれる.対象ファイルの拡張子は latex パッケージの設定の "Clean Patterns" で設定可能で,私はデフォルトから pdf のみ外した.pdf を消すようにしていると ctrl-alt-c で pdf を消しても pdf-view には消したはずの pdf が残ってしまい,以降 ctrl-alt-b でコンパイルをしても画面が更新されないということがあった.ちなみに fcitx-mozc を使っている場合,そのショートカットとバッティングするので,以下のどちらかで回避する.

Atomlatex パッケージのショートカットを変更する

 ~/.atom/packages/latex/keymaps/latex.json を変更する.このファイルを見てみると以下のようになっている.

{
  "atom-text-editor[data-grammar~=\"latex\"]": {
    "ctrl-alt-b": "latex:build",
    "ctrl-alt-s": "latex:sync",
    "ctrl-alt-c": "latex:clean"
  }
}

"ctrl-alt-b" などを違うものにすればよい.

fcitx-mozc のショートカットを変更する

 Fcitx の設定の[全体の設定]で "Show Advanced Options" をオンにし,[ホットキー]を見ると,「仮想キーボードに切り替え」などと Atomlatex パッケージのショートカットがバッティングしていることがわかるので,それらを適当なものに変えれば良い.各項目についてはこの記事を参照のこと.

BibTeX を使う

 BibTeX は文献を管理するときに非常に強力なものだが,AtomlatexBibTeX も含めたコンパイルをするときには ~/.atom/packages/latex/lib/builders/latexmk.jsconstructArgs(jobState){}args を以下のように書き換える.書き換え方はこの記事この記事を,オプションはこの記事を参考にした.

const args = [
  '-interaction=nonstopmode',
  '-f',
  '-cd',
  '-synctex=1',
  '-file-line-error',
  '-halt-on-error',
  '-latex=lualatex',
  '-e',
  '"$bibtex=\'pbibtex -kanji=utf8 %O %B\'"'
]

これで latex パッケージのショートカットを入力すれば BibTeX 込みで LuaLaTeX をコンパイルできるはずだ(フォント関係で warning が消えないが……).

Inkscape の話

 ベクター画像を作れる Inkscape だが,LaTeX の記法で文字を書くことができる.私はレポートに載せる図を作るときに本文とフォントをそろえたいのでよく InkscapeLaTeX の数式を使う.そのツールの導入方法は TeX Wiki (Inkscape)参照だが,パッケージを追加できるので,数式のフォントもデフォルトのものから txfonts や pxfonts に変えることができる.

所感

 上の設定でもエラーがでることがある.ただし再現性がなく厳しい.