概要
概要
内容は次のようなものです.
物理量の単位を記述する際には,書体として Roman 体を使う必要があります. (例えば 参考資料 [4] p.16) 単位は本文中にも数式中にも書く可能性があるのですが,それらの環境ごとに
kg\,m$^2$/sec$^2$
\text{kg}\,\text{m}^2/\text{sec}^2
のように書き分けていたのでは煩雑ですし,おちおち Copy & Paste もできません. まあ,本文中でも
$\text{kg}\,\text{m}^2/\text{sec}^2$
と書くか,または数式中で単位全体を \text{} の中に入れて
\text{kg\,m$^2$/sec$^2$}
と書くことにすれば統一はできますが,もう少し何とかしたいところです.
\ensuremath を活用すれば,本文中でも数式中でも統一した記述が可能になります.
\newcommand{\Unit}[1]{\ensuremath{\mathrm{#1}}} % 例えばこのように定義しておいて, \Unit{kg\,m^2/sec^2} % このように使います.
この優位性は,記法が統一されるというだけでなく,読み書きが容易になり文書の推敲が楽になることです.
さらに,お好みで次のような package file を作ります. (ファイル名を unit.sty とします.)
\NeedsTeXFormat{LaTeX2e}[1996/12/01] \ProvidesPackage{unit}[2007/11/15 v.1.0 Unit] %--------------------------------------------------------------- \newif\if@colour \@colourfalse \newif\if@default \@defaultfalse % \DeclareOption{colour}{\@colourtrue} \DeclareOption*{\@defaulttrue} % \ProcessOptions \if@colour \PackageInfo{unit}{Color is selected.} \RequirePackage[dvips]{color} \else \if@default \PackageInfo{unit}{Undefined option is used.} \fi \fi %--------------------------------------------------------------- % \def\degC{^\circ\mspace{-2mu}C} \def\angstrom{\text{\AA}} \def\hyphen{\text{-}} % \if@colour \def\@green{\textcolor[named]{Green}} \else \def\@green{} \fi % \newcommand{\Unit}[1]{\ensuremath{\mathrm{\@green{#1}}}} \endinput
これを TeX のソースの冒頭で次のようにして取り込むことにより利用します. この例のように,どちらか一方を comment out して下さい.
%\usepackage{unit}% for monochrome % 色は黒.印刷用. \usepackage[colour]{unit} % 色は緑.確認用.
色を着けられるようにしたのは,文中で \Unit{} の使用漏れがないかの点検を容易にするためです. (これは最近作ったものなので,それ以前の TeX の原稿では使っていないのです.)
分子式においては,元素記号や数値の書体に Roman 体を使う必要があります. (例えば 参考資料 [5]) 先述の単位と同様に,分子式も本文中にも数式中にも書く可能性があります. この場合,先述の unit.sty と同じ要領で書くことができます. そのまま流用して \Unit{H_2} のように記述しても良いでしょう.
ただ,例えば水素分子は \Chem{H2} のように書きたいところです. そこで,次のような package file を作ります. (ファイル名を chemeq.sty とします.)
(途中までは unit.sty と同様なので省略します.)
%---------------------------------------------------------------
\if@colour
\def\@red{\textcolor[named]{Red}}
\def\@violet{\textcolor[named]{Violet}}
\else
\def\@red{}
\def\@violet{}
\fi
%
\newif\if@strcmp
\def\Chemstrcmp#1{%
\strcmp{#1}{H2} \if@strcmp {\@red{H_2}}
\else \strcmp{#1}{H2O} \if@strcmp {\@red{H_2O}}
\else \strcmp{#1}{O2} \if@strcmp {\@red{O_2}}
\else {\@violet{#1}}
\fi \fi \fi%
}
\newcommand{\Chem}[1]{\ensuremath{\mathrm{\Chemstrcmp{#1}}}}
\newcommand{\NOx}{\protect\Chem{NO_{\mathnormal x}}}
\newcommand{\Chemt}[1]{\ensuremath{\mathrm{#1}}}
\endinput
これを TeX のソースの冒頭で次のようにして取り込むことにより利用します. この例のように,どちらか一方を comment out して下さい.
%\usepackage{chemeq}% for monochrome % 色は黒.印刷用. \usepackage[colour]{chemeq} % 色は赤.確認用.
これを,次のように利用します.
\begin{equation} 2\,\Chem{H2} + \Chem{O2} \to 2\,\Chem{H2O} % 反応式はこのように書く. \end{equation} \Chem{2\,H_2 + O_2 \to 2\,H_2O} % このように \Chem{} の中に反応式も書けるが,やめておきたい. \Chem{NO_x} では x はテキストのフォントが使われる. x として数式のフォントを使いたいので,\NOx を別途定義した. \section{ \Chemt{H_20} } % ここに \Chem{} を使うとエラーになる.
色着きを選んだ場合,if 文に引っ掛かれば赤,そうでなければ紫になります. 当然,chemeq.sty に記述されていない分子,例えば \Chem{N2} は,色が紫になるだけでなく 2 が添字になりません. 記述する分子はすべて chemeq.sty に追加する必要があります. (単原子分子や OH などはする必要はないし,多原子分子も \Chem{N_2} のように書けば大丈夫なのですが. 意識が「紫色を探すモード」になると,これらは意外と目障りです. 登録しましょう. なお,記述している分子を抽出するフィルターも作りました. それは配布ファイルに同封します.)
そのような登録の必要のない,もっと頭の良い package file が書ければ良いのですが,難しいですね.[1]
また,\Chem{} は \chapter{} や \section{} の中では使うことができません. そこで代わりに \Chemt{} を用意しました. この中ではすべて \Chemt{N_2} のように書かなければなりませんし,色も着きません. この点も可能ならばなんとかしたいです.
[1] sed や自作のフィルターを使って TeX の原稿の中の \Chem{} の中を書き換えることも考えたのですが,やはり TeX の内部で完結させるべきだと考え,追求するのをやめました.
ここで関連するファイルと必要なマニュアルを配布する予定です.
これまで,FreeBSD 4.9 のまで環境では cls file として,もっと古い FreeBSD の ports に収録された古いものを修正して使い続けてきました. 具体的には /usr/local/share/texmf/ptex/platex/base/jarticle.cls 等を修正して ~/texmf/ptex/platex/base/ に置いていました. jarticle.cls の version は以下の通りです.
\ProvidesClass{jarticle} [1998/12/24 v1.1o Standard pLaTeX class]
ところが,これを FreeBSD 7.2 に収録された TeX の環境で用いると,\mathrm が効かなくなります. (上記の unit.sty, chemeq.sty を狙いすましたような仕様変更ですね.) 新たな環境に添付された jarticle.cls を用いれば,この問題は生じません. その version は以下の通りです.
\ProvidesClass{jarticle} [2006/06/27 v1.6 Standard pLaTeX class]
自前の cls file は永久に使えるとすら思っていたのですが,甘かったですね.
[1]「改訂新版 TeX ブック」Donald E.Knuth, 斎藤 信男 監修,鷺谷 好輝 訳,アスキー出版局 (1992)
[2]「The LaTeX コンパニオン」Michel Goossens, et.al, アスキー書籍編集部 監訳,アスキー出版局 (1998) p.259,p.527
[3] /usr/local/share/texmf-dist/tex/latex/ にて次のようにすれば,使用例が見つかります.
% grep ensuremath */*.sty
[4] 次の資料は SIunits.sty のマニュアルですが,SI 単位系やその記述法も詳しく解説されています.
/usr/local/share/texmf-dist/doc/latex/SIunits/SIunits.pdf
[5] すみません.
確か IUPAC の引用として読んだように記憶しているのですが,資料が出てきません.
見つかり次第,ここに反映させます.