2013年8月30日金曜日

LuaTeX-jaでギリシャ文字のイタリック体を表示する.


先日LuaTeX-jaでギリシャ文字のイタリック体が表示されないと書きましたが,
本日LuaTeX-jaの使い方を参考にフォントのプリセット設定を変更したところ無事ギリシャ文字のイタリック体も表示されました.

fontspec パッケージによる数式フォント置換が不都合な場合は,
\usepackage[no-math]{fontspec}
\usepackage[...]{luatexja-preset}
 のようにしてください.

という記述があったので,次のようなファイルをタイプセットしてみました.


\documentclass{ltjsarticle}
\usepackage{luatexja}
\usepackage{amsmath,amssymb,mathrsfs}

\usepackage[no-math]{fontspec}
\usepackage[hiragino-pro]{luatexja-preset}


\begin{document}
あいうえお

$\mathit{\Delta}$, $\Delta$
$\mathit{\Psi}$, $\Psi$,
$A$, $\mathit{A}$, $I$, $\mathit{I}$,
$B$, $\mathit{B}$
\end{document}


ギリシャ文字のイタリック体もきちんと表示されています.

2013年8月25日日曜日

LuaTeX-jaではギリシャ文字のイタリック体が表示されない件

表題の通りです.LuaTeX-jaの使い方を参照してフォントのプリセット設定を行うと生じる現象のようです.フォントの設定を行っていない場合はきちんと表示されます.
使っている環境はMacTeX2013です.

  • まずは欧文のみ,クラスファイルはarticleの場合
\documentclass{article}
\usepackage{amsmath,amssymb,mathrsfs}

\begin{document}
$\mathit{\Delta}$, $\Delta$
$\mathit{\Psi}$, $\Psi$,
$A$, $\mathit{A}$, $I$, $\mathit{I}$,
$B$, $\mathit{B}$
\end{document}

ギリシャ文字のイタリック体もきちんと表示されています.アルファベットはイタリック体との違いが微妙ですね.


  • 次に日本語+欧文で,クラスファイルはltjsarticleの場合
\documentclass{ltjsarticle}
\usepackage{luatexja}
\usepackage{amsmath,amssymb,mathrsfs}

\begin{document}
あいうえお

$\mathit{\Delta}$, $\Delta$
$\mathit{\Psi}$, $\Psi$,
$A$, $\mathit{A}$, $I$, $\mathit{I}$,
$B$, $\mathit{B}$
\end{document}

ギリシャ文字のイタリック体は表示されていますが,埋め込まれていない和文フォントがゴシック体で表示されてしまいます.



  • 最後にフォントの埋め込み設定を行った場合.クラスファイルはltjsarticleです.
\documentclass{ltjsarticle}
\usepackage{luatexja}
\usepackage{amsmath,amssymb,mathrsfs}
\usepackage[hiragino-pro]{luatexja-preset}


\begin{document}
あいうえお

$\mathit{\Delta}$, $\Delta$
$\mathit{\Psi}$, $\Psi$,
$A$, $\mathit{A}$, $I$, $\mathit{I}$,
$B$, $\mathit{B}$
\end{document}

日本語のフォントはきちんと明朝体が表示されますが,ギリシャ文字のイタリック体が消えました.

この他にも,フォントのプリセット設定を行うと,文字の上にアクセント記号を付けるスタイルファイルであるaccents.styとアクセント記号の命令の幾つかが重複していてエラーが出ます(\acute, \grave, \check, \breve, \bar, \hat, \dot, \tilde, \ddot, \vec).

また,いつもはplatexでタイプセットしている原稿をLuaTeX-jaでタイプセットしてみたときに,bxjacalcuxパッケージを使ってもzwに関連したエラーが出てしまいました.こちらについては原因がよくわかりませんでした.

2013年8月23日金曜日

定理環境の修飾 mdframed.sty

追記:2016/04/19 定理環境をmdframedからtcolorboxを使ったものに変更しました。

LaTeXの話です.定理環境の見栄えを変更するために,mdframed.styを用いています.mdframed.styの機能はpdfTeXなどでタイプセットすることを前提にしているようで,platexではマニュアルにある機能を十分に活かすことが出来ません.

2014/05/01追記:tikzパッケージを読み込む前に,graphicxパッケージをdvipdfmxのオプションを付けて読み込むことで,platex+dvipdfmxでも以下のような例は再現出来ました。こちらを参照。

LuaTeXはpdfTeXの後継であり,この日本語対応LuaTeX-jaが開発されています.これを使えばmdframed.styの機能を十分に使えるのではないかと思い試してみました.LuaTeX-jaはTeXLive2013には標準で含まれており,lualatexコマンドを使ってタイプセットします.

mdframed.styのマニュアルにあるものを借用して,次のようなファイルををタイプセットしてみました.

\documentclass[a4paper]{ltjsarticle}
\usepackage{luatexja}
\usepackage{amsmath,amssymb,mathrsfs}
\usepackage{etoolbox}
\usepackage{tikz}
\usepackage{mdframed}

\usepackage{luatexja-fontspec}

\defaultjfontfeatures{Scale=0.92487}
  % この行がない場合,luatexja-fontspec は
  % 和文フォントの大きさを欧文フォントの 0.962212 倍
  % ([lt]jclasses でのデフォルト設定と同じ)で定義する.
  % 上の指定は,[lt]jsclasses における欧文 10pt: 和文 13Q
  % という比率に合わせるためのもの.

\setmainfont[Ligatures=TeX]{TeXGyreTermes}
\setsansfont[Ligatures=TeX]{TeXGyreHeros}

\setmainjfont[BoldFont=IPAexGothic]{IPAexMincho}
\setsansjfont{IPAexGothic}

\newjfontfamily\jisninety[CJKShape=JIS1990]{IPAexMincho}


\begin{document}
\newcounter{theo}[section]
\newenvironment{theo}[1][]{%
\stepcounter{theo}%
\ifstrempty{#1}%
{\mdfsetup{%
frametitle={%
\tikz[baseline=(current bounding box.east),outer sep=0pt]
\node[anchor=east,rectangle,fill=blue!20]
{\strut Theorem~\thetheo};}}}%
{\mdfsetup{%
frametitle={%
\tikz[baseline=(current bounding box.east),outer sep=0pt]
\node[anchor=east,rectangle,fill=blue!20]
{\strut Theorem~\thetheo:~#1};}}%
}%
\mdfsetup{innertopmargin=10pt,linecolor=blue!20,%
linewidth=2pt,topline=true,
frametitleaboveskip=\dimexpr-\ht\strutbox\relax,}
\begin{mdframed}[]\relax%
}{\end{mdframed}} 

\begin{theo}[Riemann積分の線型性]
$\mathscr{R}(I)$を$\mathbb{R}^n$の有界閉区間$I$上でRiemann可積分な実数値関数全体
 の集合とする.$\mathscr{R}(I)$は実ベクトル空間であり,$I$上の積分は
$\mathscr{R}(I)$から$\mathbb{R}$への線型写像である.即ち
\begin{equation}
 f, g\in \mathscr{R}(I),\ c\in \mathbb{R}\text{ならば}
f+g\in \mathscr{R}(I),\ cf\in \mathscr{R}(I)
\end{equation}
であり,なおかつ
  \begin{gather}
  \int_I (f+g)(x)\, dx
 =\int_I f(x)\, dx + \int_I g(x)\, dx, \\
  \int_I cf(x)\, dx 
 = c\int_I f(x)\, dx
 \end{gather}
が成り立つ.
\end{theo}
\end{document}


いい感じです.Tikzを使いこなせるようになると色々出来そうです.また,日本語の設定はLuaTeX-jaの使い方をそのまま貼付けました.そちらにあるスタイルファイルの誤記は修正してみたものの,フォントの設定を何も書かないでタイプセットすると,フォントの埋め込みをしていないファイルは日本語が全てゴシック体で表示されてしまいました.

また,LuaTeX-jaの実行速度は現時点ではかなり遅いです.数ページ程度のファイルならばあまり気になりませんが,数百ページのファイルになるとplatex+dvipdfmxの方が大分速いです.また全角幅や全角高さを表すzw, zhが使えなくなり,\zw, \zhに変更しなければならないので,platexと併用するために,ZRさんの「LuaTeX-jaでzwを使う件について」を参考にBxjatoolバンドルを導入しました(Bxtoolboxにも依存するのでこちらも導入しました).これでタイプセットコマンドとtexファイルのプリアンブルを少し変更することで使い分けが出来るようになりました.

マクロは使いこなせないので,個人的にはまだまだplatexを使う機会のほうが多そうです.

2013年8月17日土曜日

array環境でのエラー


これまで全く気がつかなかったのですが,次のような数式をLaTeXでタイプセットすると
"missing number, treated as zero."というエラーメッセージがでてしまいます.

\begin{equation}
\begin{array}{l}
  [a_1, b_1]\times \dotsb \times [a_{i-1}, b_{i-1}]\times
 \{a_i\}\times[a_{i+1}, b_{i+1}]\times \dotsb \times [a_n, b_n]\\
  [a_1, b_1]\times \dotsb \times [a_{i-1}, b_{i-1}]\times
 \{b_i\}\times[a_{i+1}, b_{i+1}]\times \dotsb \times [a_n, b_n]
\end{array}
\end{equation}

これは1行目で\\を用いて改行した直後に[]で囲まれた文字列を持ってくると,改行後のスペースと勘違いしてエラーを起こすようです(例えば\\[3pt]と記述すると3pt行間が空く).エラーの回避方法としては,\\の直後に括弧を入れて\\{}とし,区切りを明確にしてやることだそうです.

これまでこういう数式を打ったことが無いことに軽く衝撃を受けました.