12

TEX と KETCindy 2 つの工夫
久保康幸 ＊

Two suggestions on TEX and KETCindy
Yasuyuki Kubo ＊Abstract
First, I suggested how to use the mechanism to switch display of questions and answers that I preparedfor TEX. Secondly, I proposed a syntax coloring idea to make it comfortable for editing text files to use
when creating slides with KETCindy.

１. 問と答の表示切替
私は，過去の紀要 (久保・亀田 [1], [2]) において，問と答の表示切替を TEX で実現する仕組み ctoi 環境と ckai 環境の組合せを提案している。
そのときは，tex ソースの修正部分と表示切替の対応を示す例を提示したが，今回は，実際に教材を作る際には，その仕組みを利用して，過去に紹介したのとは異なる出力を得ることができるということ紹介しようと思う。

一つの tex ソースで，一部を書き換えることで表示を切り替えた複数の pdf ファイルを得るのでなく，一回のコンパイルで，2 つ以上の切り替えた状態のものを，一つの pdf ファイルにまとめることを提案する。

• 修正時に，修正前と修正後の切り替え表示がセットになることで違う版のものが混ざらない。
• 一つの tex ソースの一部を修正して切り替える
場合でも，切り替えパターンは 2 つ以上であり，手元に残るファイルは 3 つ以上になる。切り替えるパターンが増えるごとにファイル数が増える。これに対し，pdf を一つにすれば，コンパイル用のファイル，内容を入力するファイル，出力した pdfファイルの 3 つで済む。

１. １ 他の表示切替の紹介
自分で問と答の表示切替の仕組みを作らなくとも，既にあるのではないか？ というのが当然の疑問としてある。[1], [2] で紹介していないものがあったので，次の節では，私が授業で利用したプリントを例に，ここで紹介しておく。
「問と答のスペース」，「問と答」の 2 ページからなる
emath パッケージには，emathAe.sty が含まれてpdf ファイルの作成を示す。
いて，解答の扱いを色々と変更したい場合には，別に用意するファイル内に，解答を kaitou 環境内に入力
１. ３ pdf ファイル作成の実例
し，コンパイルする tex ソースで emathAe.sty を利コンパイル用の tex ファイル（）と，内容を入力し用することで実現するようだ [3]。
た tex ファイル（）を用意する。コンパイル用の tex
ファイルのドキュメント部分には，次のようなコード
１. ２ 自分の提案した表示切替の紹介を入力しておく。
環境内に入力したものが切り替わる点では，emathパッケージの kaitou 環境と自分の提案した ckai 環
境は同じように思われる。ただ，その環境内に入力した答をどのように処理するかは，kaitou 環境がemathAe.sty パッケージの読み込み時に，オプションで指定するのに対して，ctoi 環境，ckai 環境の場合は，本文中で変更できる。
この仕様を活用すれば，コンパイル用の tex ファイ
ルと別に，本文を編集するファイルを用意することで，一つの pdf ファイルに，「問の答のスペース」，「問と答」，「問のみまとめた」，「答のみまとめた」といったページを入れることができる。
＊ 総合教育科%%%% 下の 3 行で切り替える %%%%
\renewenvironment{ctoi}[1][blue]{\color{#1}}{\relax} % 問の部分の扱いを定義%\renewenvironment{ckai}[1][magenta]{\color{#1}} {\relax} % 答の部分の扱いを定義\renewenvironment{ckai}[1][white]{\color{#1}} {\relax} % 答の部分の扱いを定義% 上の２行をともにコメントアウト (1 行目を活か
平成 30 年 11 月 30 日受理

13
弓削商船高等専門学校 紀要 第 41 号 (平成 31 年)す) なら，問を詰める．
\input{2 年 181113 漸化式_内容.tex}

これにより作成された pdf ファイルの 1 ページ目(図 1) と 2 ページ目 (図 2) をそれぞれ示す。

２. KETCindy でのスライド作成時%%%% 下の 3 行で切り替える %%%%
\renewenvironment{ctoi}[1][blue]{\color{#1}}
KETCindy でスライドを作成するとき，内容を入力{\relax} % 問の部分の扱いを定義するテキストファイル（拡張子 txt）を別に用意する。

\renewenvironment{ckai}[1][magenta]{\color{#1}} {\relax} % 答の部分の扱いを定義%\renewenvironment{ckai}[1][white]{\color{#1}} {\relax} % 答の部分の扱いを定義% 上の２行をともにコメントアウト (1 行目を活かす) なら，問を詰める．
\input{2 年 181113 漸化式_内容.tex}
このソースの中で\input で読み込まれた tex ファ
イル “2 年 181113 漸化式_内容.tex” に実際に問と答を入力する。
なお，このソースのプリアンブル部分には，次の 2行があり，3 行のうち後ろの 2 行をコメントアウトすることにより，ckai 環境がコメントアウトのための環境になるようにしてある。

\excludeversion{ctoi}\excludeversion{ckai}

図1

解答の非表示 (1 ページ目)

そのとき，構文による色付けがされてないと，文章の内容も命令部分も同じ色では不便を感じた。対処法としては，スライドの内容を tex ソースを編集するソフトで編集することと，テキストファイルを編集するエディタの設定を修正することである。私の場合は，tex ソースの編集に texworks を使用している。
スライド作成時の txt ファイルには，tex コマンドのほかに KETCindy 独自の命令も入力する。texworksの構文色付けに KETCindy の命令も追加できれば良いが，できそうになかった。
txt ファイルの編集には，サクラエディタを使っており，構文色付けの機能も用意されている。また，texソース編集向けの選択メニューまで用意されている。
しかし，これは不十分だった。
(1) 登 録 さ れ た 単 語 を 色 付 け で 強 調 す る 仕 組 みだ ったので，色付けすべき命令の連続した入力に対応していなかった。例えば，色付けされる単語に“\sin”,“\theta” の両方が登録されているのに，sin θを表示するための “\sin\theta” が色付けされないことが確認された。

図2

解答を表示 (2 ページ目)

14
TEX と KETCindy 2 つの工夫

(2) texworks と同様に KETCindy 独自の命令が色付けされない。
２. １ 実際の対応
まず，一般の TEX コマンド色付けのためには，サクラエディタに用意されたものを使用する。
次に，(1) の状況に単語の色付けで対応するには，コマンドの結合をした数多くの単語の登録が必要となる。サクラエディタのヘルプ（リンク先 [4]）によれ
ば，最大で 15000 個までのキーワードを登録できるが，コマンドの結合を組み合わせて対応するのは現実的でない。そのため，サクラエディタに用意された，もう一つの方法である，正規表現による色付けを利用した。
正規表現は，次のようにした。

/(\\)[A-Za-z]+/k
これにより，エスケープコード “\” で始まる単語に対応できる。
また，数式モードの切り替えに使う “$” が色付けされてなかったので，これも正規表現/[\$]/kで対応した。なお，texworks に合わせて茶色を指定した。
TEX における環境の始まりと終わりを示すコマン
ド\begin,\end は，後ろに必ず “{” に続ける環境名を伴うので，次のような正規表現にした。

/(\\begin|begin|end)(?=[\{])/k/(\\end|begin|end)(?=[\{])/k
正規表現による色付けは，100 個までのキーワードにしか対応していないため，登録単語による色付けで対応できないものに限った。
２. ２ スライド作成のためのリスト
ここで，(2) の状況に対応するため，KETCindy によるスライド作成時の命令について，順に紹介する。

main::文字列//(章タイトルの指定)
強調キーワードへ “main::” を登録することで対応。
new::文字列//(節タイトルの指定)
強調キーワードへ “new::” を登録することで対応。
new::[数値]::文字列 (節タイトルに行下げを指定)
上とは別に，/(new::|begin|end)(?=[\w\[])/k という正規表現で対応する必要があった。
%repeat=数値//(new 含むスライドの枚数)
強調キーワードへ “% repeat” を登録することで対応。
\slidepage//(スライドにページ番号を表示)/(\\slidepage|begin|end)(?=[\/\/])/k という正規表現で対応。

enumerate//(enumerate 環境の始まり)/(enumerate|begin|end)(?=[\/\/])/k という正規表現で対応。

itemize//(itemize 環境の始まり)
正規表現/(itemize|begin|end)(?=[\/\/])/k で対応。
layer::{数値}{数値}//(layer 環境の始まり)
正 規 表 現/(layer::|begin|end)(?=[\{])/k で 対応。
end//(上の３環境の終わり)
強調キーワードへ “end//” を登録することで対応。
item::文//(item を追加)
正規表現/(item::|begin|end)(?=[\w\{])/k で対応。
putnote::方向と位置など//(layer 環境に図などを入れる)
強調キーワードへ “putnote::” を登録することで対応。
\setthin{濃さ}//(文字の濃さ)
TEX コマンドと同じ扱いとし，特に何もしなかった。
他 に も ，Setslidebody, Setslidehyper, Setslidemain, Setslidepage などのスライドの設定に関するコマンドがあるが，これらは，後ろに “(” を伴うので，強調キーワードへの単語登録で対応できた。
なお，2018 年 11 月 12 日現在の KETCindy には，2018 年 7 月 29 日版の houtouseslidej.txt が含まれており，それを参考に必要なコマンドと使用法を確認した。また，スライドの内容を入力するテキストファイ
ルの全ての行の最後には，“//” をつけることになっている。これがサクラエディタの単語の区切りの認識に影響を与える。また，後ろに “{” に続ける可能性のあるものも正規表現で対応しなければならなかった。
KETCindy の開発が進み，スライダの内容を入力するテキストファイルの行末に “//” をつけてもつけなくてもよくなったことが，2018 年 11 月 27 日にメーリ
ングリスト KeTpic.com で知らされた。ここで紹介した正規表現キーワードによる対応のいくつかは，次第に不要になると思われる。
２. ３

コメントアウトについて

KETCindy によるスライド作成で，%repeat により繰り返し枚数を指定したページでは，“%[]::文章”により文章を表示したいページを指定する。（ページ指定の構文は HoutouseslideJ.txt を参照。
）
そのため，スライドの内容を編集するテキストファ15
弓削商船高等専門学校 紀要 第 41 号 (平成 31 年)

イルは，先頭に % をつける行が多く，texworks のような，% によるコメントアウト行への色付けでは，構文の色付けが意味をなさない。
スライドの内容を編集するテキストファイルでは，コメントアウトは，2 つ以上の % で指定することになっており，サクラエディタでは，コメントスタイルの設定画面で，コメントアウトの色付けは “%%” を指定した。
この事情からも，スライド作成時のテキストファイルは，texworks よりも，今回のように設定したサクラエディタで編集することにした。なお，KETCindyが配布されている Dropbox からは，関連ソフトとして Terapad というエディタが入手できるが，Terapadには，構文による色付けの機能はないようである。[6]２. ４ 他の PC との共有
ここで紹介したサクラエディタの色付け設定（強調キーワード，正規表現キーワード）は，インポート，エクスポートにより他の PC にインストールしたサクラエディタに反映できる。
参考文献および参考 URL[1] 久保康幸・亀田真澄 : TEX による問と答の表示切替, 弓削商船高等専門学校紀要, 第 38 号, pp.87–89, (2016).
[2] 久保康幸・亀田真澄 : TEX による問と答の表
示切替 2, 弓削商船高等専門学校紀要, 第 39 号,pp.29–33, (2017).
[3] sampleae.pdf(emathAe.sty ver.0.36):
ダウンロードサイト (2018/11/28 確認)：
http://emath.s40.xrea.com/allinone.htm.
[4] サクラエディタ ヘルプ最終更新日 2013/03/31: http://sakura-editor.sourceforge.net/
htmlhelp/HLP000086.html.
[5]「Ketpic.com」(http://ketpic.com/)[6] TeraPad で指定した箇所の文字色を変更したい:(サイト確認 2018/11/28)：
https://bzizi.exblog.jp/17444266/.