古いtexliveでchemfigを使うには【setchemfigとchargeの落とし穴】
chemfigは化学マクロの中では最も解説ブログが豊富だが、そこに書かれている通りにやろうとしても2017以前のtexliveユーザーは頓挫することがある。
texliveを最新版にアップデートすればそれらの問題は解決するが、アップデートがうまくいかず、当分は今のバージョンのtexliveを使い続けなければならない人向けの解決策を紹介する。
なお、2017年以前のtexliveといちいち書くのは面倒なので、以降、『2017年以前のtexlive』を『texlive~2017』と表記する。
同様に『2019年以前のtexlive』を『texlive~2019』と表記する。
- 問題1…texlive~2017搭載のchemfigでは\setchemfigは使えない
- 問題2…texlive~2019搭載のchemfigでは\chargeは使えない
- 問題3…texlive~2017ではv1.54以降のchemfigは動作しない
問題1…texlive~2017搭載のchemfigでは\setchemfigは使えない
\setchemfigが使えるのは、2018/3/8に公開されたv1.3以降のchemfigらしい。
CTANのchemfigのページではアップデートの履歴を閲覧できるが、v1.3公開のお知らせに\setchemfig新登場の記載がある。
CTAN: CTAN-ann - CTAN Update: chemfig
texlive~2017には、当然のことながらそれ以前のバージョンのchemfigが搭載されているため、\setchemfigは使えない。その場合、以前存在した\setchemfigの代わりとなるコマンドを使用する必要がある。
atom sepの設定についての一例を示す。
%texlive2018以降搭載のchemfigでの表現 \setchemfig{atom sep=3em} \chemfig[atom sep=3em]{} %texlive~2017搭載のchemfigでの表現 \setatomsep{3em}
問題2…texlive~2019搭載のchemfigでは\chargeは使えない
CTANから入手できる最新のマニュアル(パッケージドキュメント)
https://ftp.kddilabs.jp/CTAN/macros/generic/chemfig/chemfig-en.pdf
には、『v1.5以降、\Lewisコマンドや\lewisコマンドが\chargeコマンドに置き換わりました』という趣旨の記述がある。
v1.5の公開が20203/5なので、それ以前のchemfigが搭載されているtexlive~2019では旧バージョンのコマンドである\lewisを使うしかない。
\lewisの使い方を知るには旧バージョンのchemfigのマニュアルを参照する必要があるが、現在CTANで閲覧できるのは最新バージョンのマニュアルのみだ。
windows10にLaTeX2e美文書作成入門改訂第7版のDVD-ROMでtexliveをインストールした場合のchemfigマニュアルの在り処を参考までに載せておく。
問題3…texlive~2017ではv1.54以降のchemfigは動作しない
以上のように、ブログなどの情報を頼りに古いchemfigを使うのには様々な問題が伴う。
ならば、
CTANから最新のchemfigをインストールすればいいのでは?
…という考えに至るのも自然なことだが、実はそれもうまくいかない。
その理由は、CTANから入手できる最新のマニュアル(パッケージドキュメント)の1.1節に記載されている。
難しい話はよくわからないが平たくいえば、『v1.54以降のchemfigは古いtexlive等では動作しませんよ』と書かれてあるのだ。
古いバージョンのchemfigを入手するのもおそらく不可能なので、texlive自体の更新が困難ならば、やはりchemfigの旧ルールに従い続けるしかない。
数学・物理・化学のノートづくりに役立つLaTeXマクロ一覧
CTANにある数多のマクロ達。それらを隅々まで把握している者はおそらく存在しないだろう。知れば知るほどLaTeXの無限の可能性を実感できるのに、誰もが使う一部のマクロしか知られていないのはもったいない…
『こんなものをつくりたい!』と思ったときにどんなマクロを使えば効率が良いのか、迷える未来の自分と誰かのためにメモしておく。
随時更新。マクロの説明は超主観的なので、気になったものはぜひ検索してマニュアルを開いてみてほしい。
witharrows
…式変形に補足説明を加える
bchart
…棒グラフをかく
tikznetwork
…グラフ理論の図解、様々な模様を描いた平面を描画、2平面間に矢印を描画
(複素関数や多変数関数、線形代数などの図解に使えそう)
tkz-linknodes
…樹形図、式変形に補足説明を加える
tkz-euclide
…平面幾何、コンパス跡、分度器
tkz-graph
…グラフ理論
tkz-berge
…樹形図、項などを表す球(力学ノートで質点として使えそう、特に多質点系の力学で大活躍しそう)
thmtools
…定理を記述する環境を整えてくれる
rulercompass
…コンパスによる作図跡
pas-cours
…メタリック調のテカテカした枠組み、テカテカした立体、立体幾何、展開図、漸化式の図示
luamesh
…平面幾何、グラフ理論
drawmatrix
…行列の中身を表す箱
venndiagram
…ベン図
rank 2 roots
…群論の図
nicematrix
…行列中に列や行を区切る線引き、表、行列の成分を色分け、行列の横や上下に行や列の名前を表すメモ書き、一般の大きさの行列、行列の横や上に行や列の本数を表すメモ書き、掃出法の変形の補足説明、行列間の関係を表す矢印
karnaugh-map
…カルノー図
scratch3
…一行メモをパズルのように羅列
tikzorbital
…分子軌道法ダイアグラム、混成軌道のイメージ図
modiagram
…分子軌道法ダイアグラム
bohr
…ボーア模型風電子配置図
pgf-spectra
…光のスペクトル
pst-sigsys
…様々な物理の図を描く
pst-optic
…レンズの図ならなんでもかける
tikz-optics
…光の実験の装置図、物体の長さを表す矢印
pst-magneticfield
…磁場を描く
chemschemex
…反応機構を組み立てる矢印(生化学などの円形反応機構にも対応)
tikz-planets
…惑星
circuitikz
…回路図
tikz-qtree
…樹形図
forest
…樹形図(tikz-qtreeよりバリエーション豊富)
istgame
…樹形図、グラフ理論
mptrees
…樹形図
fast-diagram
…樹形図、家系図、分類表
ribbonproofs
…証明の流れや他の定理との関係を表す表
tikz-dependency
…単語と単語の間を矢印で結んで関係を表す(数列の項どうしの関係をメモするのに役立ちそう)
smartdiagram
…円形の関係図(生化学反応の概要を表すのに役立ちそう)
…横並びの関係図(作業の手順をメモするのに役立ちそう)
…縦並びの関係図
言葉で表せないが、ノート制作において本当にいろいろ使えそう
bodewgraph
…対数グラフ
tikz-3dplot
…3次元座標、3次元グラフ
pgfplots
…あらゆるグラフを描画(多変数関数の微分積分学、統計学などのノートづくりに必須)
bclogo
…可愛い枠
tikiz-page
…ページ端に装飾を施す(便箋とか作れそう)
callouts
…画像にメモを書き込む
matrix.skeleton's
…行列などを表す色分けされた表
tikzmark
…文章中に矢印メモを書き加える
DPcircling
…文章中の一部分を特殊な枠で囲んで強調する
xypic
…圏論、編み物の編み図
commutative diagram
…圏論
xlop
…筆算
underoverlap
…数式の上下に括弧で注釈、数式の一部を箱で囲んで注釈
onbraces
…数式の上下に括弧で注釈
tkz-tab
…微分でグラフをかくときの増減表、数列の増減を表す表
tabvar
…増減表
systeme
…連立方程式の記述
statistics
…グラデーション表(pH表とかに使えそう)、統計学のグラフ
spalign
…行列やベクトルの記述
short math
…複雑な数式の記述
shapes
…分数を表す円
schulmathematik
…複雑な数式、座標平面、化学定数、回路図、同位体、問題集のような空欄、計算問題集のように数式を並べる、列ベクトルを簡単に出力
rec-thy
…抽象数学で使う様々な記号
pst-vehicle
…円の幾何学(2円の関係、曲率)、坂を走る車や自転車
pst-poly
…多角形
pst-platon
…多面体
pst-ode
…3次元グラフ
pst-math
…2次元グラフ
pst-geometrictools
…三角定規、分度器、コンパス、定規などのイラスト
pst-func
…グラフと棒グラフの融合
pst-eucl
…平面幾何
polynomial
…多項式を超絶簡単にかく
polynom
…多項式の割り算の筆算、組立除法、因数分解した式を計算して出してくれる
longdivision
…数の割り算の筆算
phfthm
…定理を記述する環境を整えてくれる
perfectcut
…様々な括弧を出力(多重になったときの大きさ調整も可能)
musikui
…数字の代わりに四角を用いて筆算の手順を説明
mfpic4ode
…ベクトル場を図示
mathtools
…シグマやlimの下に数式、複数行に渡る数式を見やすく配置、連立方程式のような形式で答えを場合分けして表示
mathfont
…あらゆる数学記号を出力、手書きボールド体アルファベットの出力
mathexam
…数学試験問題プリントの作成を補助
mathdots
…記号の上にドット(微分の表示など)
mathalpha
…数学で用いる様々なフォントのアルファベット
letterswitharrows
…記号の上に矢印(ベクトルの表示)
jkmath
…整数論や組合せ論の記号、ボールド体アルファベットを簡単に出力
hf-tikz
…数式を色付き枠で囲む
halloweenmath
…数式を超絶可愛く飾る
gn-logic
…論理式
gauss
…掃出し法の手順注釈
derivative
…微分記号を簡単に出力
diffcoeff
…微分記号を簡単に出力(特に熱力学で使う固定変数を明示した偏微分記号)
content
…あらゆる関数を簡単に出力、微分積分記号を簡単に出力、単位行列を簡単に出力、複素平面の記号を簡単に出力、組合せ論の記号を簡単に出力、整数論の記号を簡単に出力、テンソル、etc.
とにかく万能だから物理や数学のノートづくりには必須
commath
…様々な括弧つきの文字、微分記号、ノルムなどを簡単に出力
bropd
…括弧つきの文字、微分記号を簡単に出力
braket
…括弧つきの文字を簡単に出力
bigints
…ベクトルの積分記号を出力
autoaligne
…項を縦に揃えて数式をかく(式変形が分かりやすくて便利)
susy
…物理でよく使う文字を簡単に出力
physics
…あらゆる物理記号を簡単に出力
物理のノートづくりには必須
mandi
…様々な単位、ベクトル解析の定理式、熱力学の式、マクスウェル方程式を簡単に出力
物理のノートづくりには必須
simplewick
…同類項などを結ぶ線
chemfigで色つき構造式を描く【LaTeXで化学ノートをつくりたい】
xymtexで色つき構造式を描くのは比較的簡単だが、chemfigで色つき構造式を描こうとすると様々な困難が立ち塞がる。
しかし、xymtexは環式化合物の描画に特化しているため、鎖式化合物の色つき構造式を描くにはどうしてもchemfigを使わなくてはならない。
chemfigマニュアル(英語)にもほとんど明記されておらず、解説ブログも現時点では存在しないchemfig構造式のカラー化手法…
そんな道無き道だが、試行錯誤の末に方法を確立した(気がする)ので、ここに記しておく。
構造式全体に色をつける
これは簡単である。
\textcolor{色名}{\chemfig{構造式を出力する文字列}}
とすればよい。
結合線に色をつける
chemfigで結合線を描くには、\chemfig{}内で
- 単結合なら -[結合線の情報]
- 二重結合なら =[結合線の情報]
- 三重結合なら ~[結合線の情報]
という書式で入力することになり、結合線の情報の中身は
[角度,長さの倍率,結合元原子の番号,結合先原子の番号,TikZのオプション]
のように記述する。
具体的な書き方については、私自身も大変お世話になったブログ↓
chemfigパッケージによる構造式描画 - TeX Alchemist Online
を参照していただくとして、とりあえず結合線に色をつけるにはtikzのオプションの部分を色名に変更すればよい。
離れている原子にそれぞれ色をつける
これも直感が通用し、\chemfig{}内で
\textcolor{色名}{原子}
とすればうまくいく。
主鎖の一部や置換基に色をつける(ここからが本題)
ここが厄介なところで、単純に\textcolor{色名}{基を出力する文字列}としてしまうと次のような問題が発生する。
基が主鎖の一部分の場合
…色をつけた基が主鎖の他の部分に重なる
基が主鎖に直接結合している置換基の場合
…結合線の位置が色をつけた基の中央になってしまい、CとCとの結合に見えない
試行錯誤の結果、これらの問題を回避するには次のように記述すればよいことがわかった。
鎖の骨格となる原子とそこにくっついている諸々を分けて、別々に色づけしてあげるというニュアンスである。
枝分かれとなるメチル基-CH3に色をつける場合
-[,,,,色名]\textcolor{色名}{C}|{\color{色名}H_3}
プロパンCH3-CH2-CH3のCH2部分に色をつけたい場合
枝分かれがない鎖状化合物の一部分に色をつけるなら、chemfigを使わずにchemformulaパッケージの\chコマンドで全体を描画するほうが早い。
\chコマンドではchemfigのような厄介な問題は起こらないからだ。
プリアンブル↓
\usepackage{chemformula}
begin{document}以降↓
\ch{CH3-\textcolor{色名}{CH2}-CH3}
イソブタンの主鎖の一部に色をつける場合
枝分かれがある化合物はchemfigで描くしかないので、上記のメチル基の場合と同じように、骨格をつくるCは独立で色付けしなければならない。
プロパノールのOH基に色をつける場合
Oは骨格をつくる原子とみなし、これまでに挙げた例のCと同じ扱いをする。
鬼畜な例
以上の教訓を胸に、次のような鬼畜な構造式を描画してみよう。
水色とピンクはお気に入りの色味に設定。
(このRGB値はアナログ時代愛用していたプレイカラーというペンの桃色、水色をスポイトでデータ化したもの)
\definecolor{plmomo}{RGB}{248,22,147} \definecolor{plmizu}{RGB}{2,181,238}
また、\textcolor{plmomo}{}や\textcolor{plmizu}{}といちいち書いていると鬼畜な長さのコードになってしまい、エラーが起きたときに原因を見つけ出しづらくなってしまうため、
\newcommand{\mm}[1]{\textcolor{plmomo}{#1}} \newcommand{\mz}[1]{\textcolor{plmizu}{#1}}
のようなコマンドを定義して、\mm{}または\mz{}と書けば済むように工夫しよう。
つまり、ここから先は、
- \textcolor{plmomo}{}を\mm{}で表す
- \textcolor{plmizu}{}を\mz{}で表す
するとコードは…
\chemfig{\mm{C}|{\color{plmomo}H_3}\mm{C}|{\color{plmomo}H}=[,,,,plmomo]\mm{C}|{\color{plmomo}H}-[,,,,plmomo]\mm{C}|{\color{plmomo}H}(-[2,,,,plmizu]\mz{C}|{\color{plmizu}H_2}-[,,,,plmizu]\mz{C}|{\color{plmizu}H}=[,,,,plmizu]\mz{C}|{\color{plmizu}H_2})-[,,,,plmomo]\mm{C}|{\color{plmomo}H_2}\mm{C}|{\color{plmomo}H_2}\mm{C}|{\color{plmomo}H}=[,,,,plmomo]\mm{C}|{\color{plmomo}H_2}}
…こうなる。エグい
\chemfig{}内の各部分が何を表すのか分解してみると、
%主鎖のCH3(左端) \mm{C}|{\color{plmomo}H_3} %主鎖のCH \mm{C}|{\color{plmomo}H} %主鎖の= =[,,,,plmomo] %主鎖のCH \mm{C}|{\color{plmomo}H} %主鎖のー -[,,,,plmomo] %主鎖のCH \mm{C}|{\color{plmomo}H} %枝分かれ ( -[2,,,,plmizu]\mz{C}|{\color{plmizu}H_2}%ーCH2 -[,,,,plmizu]\mz{C}|{\color{plmizu}H}%ーCH =[,,,,plmizu]\mz{C}|{\color{plmizu}H_2}%=CH2 ) %主鎖のー -[,,,,plmomo] %主鎖のCH2 \mm{C}|{\color{plmomo}H_2} %主鎖のCH2 \mm{C}|{\color{plmomo}H_2} %主鎖のCH \mm{C}|{\color{plmomo}H} %主鎖の= =[,,,,plmomo] %主鎖のCH2(右端) \mm{C}|{\color{plmomo}H_2}
…本当に大変だが、アナログで色ペンを何度も持ち替えながら書くよりはよっぽど楽である。
位置番号つきの炭素を出力する【LaTeXのnewcommand】
LaTeXのword的な使い方はだいぶ身についたため、もう少し(というかいきなり)レベルを上げて、
現在はIUPAC有機化合物命名法の要点&問題集を制作中。
命名法の勉強は数ヶ月前からちまちまと進めてはいたが、手書きのメモはゴミのように汚かった。
それらがLaTeXによってどんどん綺麗な形に生まれ変わっていくことにとてつもない幸福感を感じている。今もニヤニヤと一人で笑いながらこの文章を打っている。
そんなわけで今は化学組版に夢中なので、化学系便利グッズもどんどん生み出していくことになるだろう。誰でもつくれるレベルのことしかできないが、小さな小さな工夫を続けていく。
さて、今日つくったのは…
ほらほら、Cの上に紫色の位置番号が乗っかっているでしょう?
この位置番号つき炭素を簡単に出力するコマンドが今日の産物。
たとえば、
\iC{6}
と入力すれば、上に小さい6が乗っかった炭素Cが出力される。
そしてこのコマンドは\ch{ }内でも問題なく使用可能。
ソースコードはこちら。
\usepackage{amsmath} %位置番号の色の定義(お好みで変えてね) \definecolor{plsumire}{RGB}{128,7,172} %位置番号つき炭素コマンドiC \newcommand{\iC}[1]{$\overset{\textcolor{plsumire}{#1}}{\mbox{C}}$}
日本語の添え字をつける【LaTeXのnewcommand】
圧力を表す文字Pの左下に『アンモニア』を添えることで、アンモニアの圧力を一文字で表すことができる。
このように、文字に日本語の添え字を加えるというシチュエーションはまあまあよくあるのではないだろうか。
だが、このような日本語の添え字をつける操作はいろいろと面倒なのである。
たとえば、Pの左下に3を添えるには、
$P_3$
と入力すればよい。_や^は数式環境でしか使うことができないため、$ $で囲ってある。
$ $の中は数式環境(数式やアルファベットしか使用できない環境)であるので、日本語の添え字をつけるためには、さらに日本語部分を\mbox{ }で囲ってあげなくてはならない。(\mbox{ }で囲った日本語は、数式環境内でも認識される。)
つまり、たとえばPの左下にアンモニアを添えるとしたら、
$P_{\mbox{アンモニア}}$
と記述すればよい。
…のだが、この出力結果を見てみると、
今度は添え字デカすぎ問題が浮上する。
添え字の大きさを変更するには、プリアンブルに\usepackage{graphicx}を入力した上で、
$P_{\scalebox{0.5}{\mbox{アンモニア}}}$
とすればよい。
\scalebox{0.5}{ }で囲んであげることにより、アンモニアの部分が0.5倍に縮小されるのだ。(もちろん倍率は好きな値に変えてよい)
この出力を見てみると、
…うん、やっと添え字っぽくなった。
さて、以上の流れをいちいち行うのは大変面倒なので、
\soeniho{P}{アンモニア}
と入力するだけで上の画像のような出力が得られるコマンドを作成した。
ソースコードをどうぞ。添字の倍率(0.5の部分)はお好みで変えてね
\usepackage{graphicx} \newcommand{\soeniho}[2]{$#1_{\scalebox{0.5}{\mbox{#2}}}$}
こんな感じで使っています↓↓↓
LaTeXで色付きニューマン投影式を描く【LaTeXのnewcommand】
\usepackage{chemmacros}と入力するとbegin{document}に対してundefined control sequenceエラーが出るという謎の現象が発生しており、2日間いろいろな策を試みたものの一向に解決の兆しが見えないため、いよいよ最終手段に出ることにした。
その最終手段とは…結局chemmacrosの使用は諦め、
『他のパッケージで代用できない機能は自分で作る』
というわけで、まずはchemmacros独自の機能であるニューマン投影式の描画コマンドの代わりとなるものを自作しよう。
chemmacrosのプログラムはexpl3とxparseによって記述されている。しかし、expl3はまったく分からない上、それ自体がエラーの原因になっている可能性も否定できないため、ここは無難にtikzとLaTeXのnewcommand機能を用いて作成することとする。
そして完成品がこちら。
- ねじり型ニューマン投影式…\nejinewm
- 重なり型ニューマン投影式…\kasanewm
- 色分けバージョン…語尾にcl
\nejinewm{H}{CH}{F}{Cl}{N}{O}%下図の左から1番目を出力する \nejinewmcl{H}{CH}{F}{Cl}{N}{O}%下図の左から2番目を出力する \kasanewm{H}{CH}{F}{Cl}{N}{O}%下図の右から2番目を出力する \kasanewmcl{H}{CH}{F}{Cl}{N}{O}%下図の右から1番目を出力する
…と入力すると、下図が簡単に描ける。{ }内は分かりやすいようにすべて違う原子団にしている。もちろん{ }内に好きな原子団を放り込めばよい。
ソースコードはこちら。
プリアンブルに記述するには長すぎるので、コピペして適当な名前のstyファイルとして保存し、usepackageで呼び出して使うのがオススメ。
%アルファベットや数式をちょっと可愛くするフォントパッケージ(お好みで。使わなくてもよし) \usepackage[math]{anttor} %必須 \usepackage{xcolor} \usepackage{tikz} \usetikzlibrary{calc,intersections} %手前の炭素につく基の色の定義(RGB以降は好きな色に書き換えてもよし) \definecolor{plmomo}{RGB}{248,22,147} %後ろの炭素とその基の色(RGB以降は好きな色に書き換えてもよし) \definecolor{plmizu}{RGB}{2,181,238} %ねじり型ニューマン投影式描画コマンドnejinewm \newcommand{\nejinewm}[6]{ \begin{tikzpicture} \coordinate (C) at (0,0) ; \foreach \angle in {90,210,330} { \draw (C) -- ++(\angle:1.5) coordinate (C-\angle) ; } \draw (C) circle (.75); \foreach \angle in {30,150,270} { \draw (C) ++(\angle:.75)--++(\angle:.75) coordinate (C-\angle) ; } \foreach \angle in {30} { \node[inner sep=0,anchor=180+\angle] at (C-\angle) {#1} ; } \foreach \angle in {90} { \node[inner sep=0,anchor=180+\angle] at (C-\angle) {#2} ; } \foreach \angle in {150} { \node[inner sep=0,anchor=180+\angle] at (C-\angle) {#3} ; } \foreach \angle in {210} { \node[inner sep=0,anchor=180+\angle] at (C-\angle) {#4} ; } \foreach \angle in {270} { \node[inner sep=0,anchor=180+\angle] at (C-\angle) {#5} ; } \foreach \angle in {330} { \node[inner sep=0,anchor=180+\angle] at (C-\angle) {#6} ; } \end{tikzpicture} } %色付きのねじり型ニューマン投影式描画コマンドnejinewmcl \newcommand{\nejinewmcl}[6]{ \begin{tikzpicture} \coordinate (C) at (0,0) ;/ \foreach \angle in {90,210,330} { \draw[very thick,plmomo](C) -- ++(\angle:1.5) coordinate (C-\angle) ; } \draw[plmizu](C) circle (.75); \foreach \angle in {30,150,270} { \draw[very thick,plmizu](C) ++(\angle:.75)--++(\angle:.75) coordinate (C-\angle) ; } \foreach \angle in {30} { \node[very thick,plmizu,inner sep=0,anchor=180+\angle] at (C-\angle) {#1} ; } \foreach \angle in {90} { \node[very thick,plmomo,inner sep=0,anchor=180+\angle] at (C-\angle) {#2} ; } \foreach \angle in {150} { \node[very thick,plmizu,inner sep=0,anchor=180+\angle] at (C-\angle) {#3} ; } \foreach \angle in {210} { \node[very thick,plmomo,inner sep=0,anchor=180+\angle] at (C-\angle) {#4} ; } \foreach \angle in {270} { \node[very thick,plmizu,inner sep=0,anchor=180+\angle] at (C-\angle) {#5} ; } \foreach \angle in {330} { \node[very thick,plmomo,inner sep=0,anchor=180+\angle] at (C-\angle) {#6} ; } \end{tikzpicture} } %重なり型ニューマン投影式描画コマンドkasanewm \newcommand{\kasanewm}[6]{ \begin{tikzpicture} \coordinate (C) at (0,0) ; \foreach \angle in {90,210,330} { \draw (C) -- ++(\angle:1.5) coordinate (C-\angle) ; } \draw (C) circle (.75); \foreach \angle in {75,195,315} { \draw (C) ++(\angle:.75)--++(\angle:.75) coordinate (C-\angle) ; } \foreach \angle in {75} { \node[inner sep=0,anchor=180+\angle] at (C-\angle) {#1} ; } \foreach \angle in {90} { \node[inner sep=0,anchor=180+\angle] at (C-\angle) {#2} ; } \foreach \angle in {195} { \node[inner sep=0,anchor=180+\angle] at (C-\angle) {#3} ; } \foreach \angle in {210} { \node[inner sep=0,anchor=180+\angle] at (C-\angle) {#4} ; } \foreach \angle in {315} { \node[inner sep=0,anchor=180+\angle] at (C-\angle) {#5} ; } \foreach \angle in {330} { \node[inner sep=0,anchor=180+\angle] at (C-\angle) {#6} ; } \end{tikzpicture} } %色付きの重なり型ニューマン投影式描画コマンドkasanewmcl \newcommand{\kasanewmcl}[6]{ \begin{tikzpicture} \coordinate (C) at (0,0) ;/ \foreach \angle in {90,210,330} { \draw[very thick,plmomo](C) -- ++(\angle:1.5) coordinate (C-\angle) ; } \draw[plmizu](C) circle (.75); \foreach \angle in {75,195,315} { \draw[very thick,plmizu](C) ++(\angle:.75)--++(\angle:.75) coordinate (C-\angle) ; } \foreach \angle in {75} { \node[very thick,plmizu,inner sep=0,anchor=180+\angle] at (C-\angle) {#1} ; } \foreach \angle in {90} { \node[very thick,plmomo,inner sep=0,anchor=180+\angle] at (C-\angle) {#2} ; } \foreach \angle in {195} { \node[very thick,plmizu,inner sep=0,anchor=180+\angle] at (C-\angle) {#3} ; } \foreach \angle in {210} { \node[very thick,plmomo,inner sep=0,anchor=180+\angle] at (C-\angle) {#4} ; } \foreach \angle in {315} { \node[very thick,plmizu,inner sep=0,anchor=180+\angle] at (C-\angle) {#5} ; } \foreach \angle in {330} { \node[very thick,plmomo,inner sep=0,anchor=180+\angle] at (C-\angle) {#6} ; } \end{tikzpicture} }
…白状しよう。
実はゼロから自分で作ったわけではない。(そもそもtikzの使用自体が今回が初体験なので何一つわからなかった)下記リンクにあるコードをベースにいろいろいじったのである。
赤シートで隠れる暗記問題集を作る【LaTeXのnewcommand】
LaTeXを始めてちょうど1ヶ月、初めてオリジナルコマンドを創作した。(とはいえプログラミング知識ゼロ人間が作れるものなどたかが知れており、めちゃくちゃショボい)
その名も『\annki』、\annki{ }で囲めばその部分が赤シートで消える仕様になるというものである。
出力はこんな感じ
(少なくとも私が所有しているプリンターで印刷すると)黒字でない部分はすべて赤シートでほぼ消える。
この色味は何度も何度も試行錯誤した末にたどり着いたものだ。
自宅のプリンターは格安ゆえに曲者で、とにかく画質が粗い。そのせいで、カラー文字はいかにも『複数の色のインクを混ぜ合わせてつくりました』と言わんばかりに多彩な色の斑点で構成されていることが見て分かる。赤シートで隠れる色に設定したとしても、それに混ざっている赤シートで隠れない色の斑点が文字を浮かび上がらせてしまうのである。
斑点によって文字が認識できてしまうのなら、文字の周りの部分にも斑点が散らばっていればどこが文字なのかが分からなくなるはずという発想から、文字だけでなく背景にも色をつける方針に切り替えた。とはいえ、背景の色のチョイスもなかなか難しい。文字の色と対照的な色を使ってしまえば、むしろ文字の色が際立って赤シート越しに浮かび上がって見えてしまう。文字の色と似ている色を使ってしまえば、赤シートを外したときに文字が背景と同化して解読が難しくなる。
日本語 - 色の名前と色見本
↑このサイトを見ながら、文字色と同系色で、かつ文字を隠さないような微妙に文字色と異なる色を片っ端から試していったところ、画像のような組合せがベストだと発見した。
(…まあ過程はどうでもいいので)完成したannkiコマンドのソースコードを置いておく。
以下のテキストをコピーして、
- プリアンブルにペーストする
もしくは
- TeXにペースト→annkiという名前をつけ、拡張子をtexではなくstyに変更して保存→そのstyファイルを他のTeX関連パッケージと同じフォルダに置く→ファイルの場所を表すバーをクリック、cmdと入力、Enterでコマンドプロンプトが起動される→コマンドプロンプトにmktexlsrと入力、Enter→TeXに戻ってプリアンブルに\usepackage{annki}と入力
すれば、\annkiコマンドが使えるようになる。
\usepackage{color} \definecolor{plyamabuki}{RGB}{255,163,19}%文字色の定義 \definecolor{usuiro}{RGB}{253,232,233}%背景色の定義 \newcommand{\annki}[1]{\colorbox{usuiro}{\textcolor{plyamabuki}{#1}}}%コマンドの定義