毎日もくもく

毎日もくもく

日記,そして備忘録

(続)LuaLaTeX と…

Windows でも Atom で LuaLaTeX やった

 Atom と LuaLaTeX と BibTeX,おまけに Inkscape - 毎日もくもくと同じ手順でできた.ただし latex パッケージの設定で TeX Path は C:\texlive\2017\bin\win32 とした.

テンプレ変更のメモ

 前にAtom と LuaLaTeX と BibTeX,おまけに Inkscape - 毎日もくもくで自分のテンプレを載せたが,変更したのでメモ.

余白の設定

 前は余白の設定をしても中心フッタのページ番号が真ん中からずれるため,余白設定をしていなかったが,どうやら fancyhdr と geometry の読み込む順番を入れ替えれば良かったらしい(usepackage の順番難しい).

% -----余白の設定-----
% geometry と fancyhdr の順番は http://d.hatena.ne.jp/pureodio/20110212/1297475110 参照
\usepackage[left=19.05truemm,right=19.05truemm,top=25.40truemm,bottom=25.40truemm]{geometry}

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

フォントの設定

 順番を入れ替えた.txfonts から newtxmath などに乗り換えたいが,個人的に txfonts の丸まったインテグラルが好きで,それが newtxmath で何故か出ない(マニュアルではちゃんとでているのに…)ため,まだ乗り換えられていない.

% -----フォントの設定-----
% 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}
% 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}
% 数式
\usepackage{amsmath}    % 高度な数式用
% times ベース -> txfonts
% palatino ベース -> pxfonts
% ToDo: newtxmath などに乗り換える
\usepackage{txfonts}
\usepackage{mathrsfs}   % 花文字用
\usepackage{bm}         % 斜体太字ベクトル

refcheck を使ってみた

 図や表などにつけたラベルを pdf でも表示するもの.執筆途中なら役立ちそう.

\usepackage[nomsgs]{refcheck}    % ラベルを表示

オプションについてはマニュアル(pdf)の p.3 に書いてある.

導入しても良いかもしれないパッケージ

 今は導入していないけど何か良さげだなあと思ったもの

  • ifluatex: これを使えば if 文で LuaLaTeX と (u)pLaTeX を分けて書けそう.完全なプリアンブルのために.
  • bxjscls: 多くのエンジンに対応した文書クラスのコレクション.完全なプリアンブルのために.
  • luatexja-preset: フォントのところをもっと簡単に書けるかも.
  • newtxmath: 上述の通り.
  • unicode-math: よく分かっていないけど完全になれそう.
  • mathtools: 何か数式関連で便利なものが入っているっぽい.
  • cleveref: 今のところ自分で \refFig{} などを定義してやっているけど,それをもっと楽にするもの(多分).単数形複数形,文頭文中などの区別が可能で,英語で論文を書くようになったら多分移行する.別に今の環境に不満があるわけでもないのですぐには移行しない.

いずれ LuaLaTeX と (u)pLaTeX に対応したプリアンブルを書いて自分専用のスタイルにしたい.そのとき Atom はどうすればいいんだろうか.

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 の順番があっているのか分からない)  

\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 %O %B\'"'
]

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

Inkscape の話

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

所感

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

Python の matplotlib.pyplot でグラフをたくさん作るとき

自分用のメモ.

RuntimeWarning: More than 20 figures have been opened. Figures created through the pyplot interface (matplotlib.pyplot.figure) are retained until explicitly closed and may consume too much memory. (To control this warning, see the rcParam figure.max_open_warning).

を回避するためにグラフ作ったときの最後に

plt.close()

を書けば良いはず.

来年から一人暮らし

一人暮らし楽しみ!
何買えば生活できるか分からない.
教えてくれ.

急に Windows Update ができなくなった話

急に Windows Update ができなくなり,こんなメッセージ表示された.

更新プログラムのインストール中に問題が発生しましたが、後で自動的に再試行されます。この問題が引き続き発生し、Web 検索やサポートへの問い合わせを通じて情報を集める必要がある場合は、次のエラー コードが役立つ可能性があります: (0x800705b4)

まあ Update だけならまだ良かったけれど,なぜか Word と Excel が起動しなくなったので,早く直そうと思い,エラーコードの “0x800705b4” で検索してみるとこんなページにたどりついた.
Windows 10 の項に書いてあるとおりに管理者としてコマンドプロンプトを起動し

> DISM.exe /Online /Cleanup-image /Restorehealth

を実行しても途中で止まってしまい(90% くらい),駄目だった.
思い切って PC を再起動しようとしたが,Windows の準備をしているから電源落とすなみたいなメッセージがでて進まなかったので,強制的に電源を落としたら普通に再起動できた.
メニューからトラブルシューティングを起動し,Windows Update の項目をクリックしてしばらくしたら問題が解決されたっぽい.
めでたしめでたし.
ちなみに原因は分からないし,最終的に Word や Excel も起動するようになった.