81

ドラッグ・アンド・ドロップで KETCindy
久保 康幸 ＊ ・高遠 節夫 ＊＊KETCindy with drag-and-drop
Yasuyuki Kubo ＊ , Setsuo Takato ＊＊Abstract
In this paper, I introduce batch files to make use of KETCindy by drag & drop.

１. はじめに2014 年 9 月 5 日、KETpic と Cinderella のコラボにより KETCindy が誕生した。 最初のうちは、コtex ファイルを input してコンパイルする。
• TEX コンパイルにより得られた dvi ファイルを pdf ファイルに変換し、図の出来映えを確認する。

ンパイルの手順を指定したバッチファイルの内容を扱うファイル名に合わせて書き換えて利用する仕様だったので、KETCindy に初めて接する者が実際のコンパイル内容などを意識せず利用できるよう、ドラッグ・アンド・ドロップに対応するバッチファイルを作成することにした。現在、KETCindy は、ライブラリの変更、ボタンを配置したテンプレートの活用により、利用者が、バッチファイルの書き換えを意識しないで作業できるように進化している。テンプレートに配置されるボタンは、KETCindy 開発

ドラッグ・アンド・ドロップ方式による KETCindyの利用は、次の手順で KETCindy を利用することを指す。

• 任意のフォルダにある cdy ファイルをドラッグ・アンド・ドロップする。

• 図のデータ用 tex ファイルと pdf ファイルが作成され、元のフォルダに追加される。
３. KC_DN というバッチシステムの初期は 3 つ (内容的には 1 つ) であったが、機能まず、ドラッグ・アンド・ドロップで作業する内の追加と統合でボタンの数が変化し、作業中に生成容を記述しただけバッチファイルを作った。まだ、される一時的なファイルを意識しなくとも図の確認

ドラッグ・アンド・ドロップ方式で作業するためのができるようになってきている。私の作成したバッフォルダを指定したり、cdy ファイルを置くフォルチファイルへのドラッグ・アンド・ドロップ方式は、ダ名に半角空白を使わないなどの制約はあったが、初期のテンプレート cdy ファイルに配置されたボタcdy ファイルをドラッグ・アンド・ドロップすれば、ン 1 つが使えれば KETCindy が体験できる。ただコンパイルなどの作業をして、作成された図の確認し、現在、コンパイルに利用するプログラム (Scilab用 pdf ファイルを cdy ファイルと同じフォルダに等) もバージョンアップしており、それに対応する保存するものであった。

必要がある。

また、既に開発の進んでいた親子バッチの考え方

以下において、バッチファイルを紹介することにに合わせるため、ドラッグ・アンド・ドロップ方式より、進化し続ける KETCindy に対応できることのバッチファイルも親子方式にしてある。バッチも明らかとなるに違いない。

ファイルの記述内容を次に紹介する。

２. ドラッグ・アンド・ドロップ方式の概略

KETCindy は、次の手順で、図入りTEX 文書を作成している。

• 動的幾何ソフト Cinderella で、図を作成し、ボタンで sci ファイルを作成する。
• CAS ソフト Scilab で、sci ファイルをコンパイルし、図のデータ用 tex ファイルを作成する。
• 用意した文書用 tex ファイルに図のデータ用＊ 総合教育科＊＊東邦大学親バッチ（KC_DN.bat）の内容

C:\KetCinW\KetCin_DN %~n1 KetCin %~p1
子バッチ (KetCin_DN.bat) の内容:NAME_check
If NOT %1==KetCin GOTO NAME_OK
ECHO ファイル名として KetCin を使わないこと。
平成 27 年 11 月 30 日受理

理学部

訪問教授

82
弓削商船高等専門学校 紀要 第 38 号 (平成 28 年)(1 − 1) 作業フォルダに sce フォルダがあれば、pause
GOTO ENDそれを利用する。

(1 − 2) 作業フォルダに sce ファイルがなく、ｍｙフォルダに sce にあれば、ｍｙフォルダの sce ファ:NAME_OK
cd c:\KetCinW\If EXIST %1.sce GOTO KET_RUN
If EXIST %3%1.sce GOTO KET_COPY:KET_STOPECHO 先に Scishell を実行して下さい。
pause
GOTO END:KET_COPY
If NOT %3==\KetCinW\ copy %3%1.sce\KetCinW\%1.sce
ECHO Scilab ファイルが最新でない可能性があります。

イルを作業フォルダにコピーして利用する。

(1 − 3) 作業フォルダとｍｙフォルダのどちらにも、sce ファイルがなければ、作業を中断する。
(2) cindy ファイルの名前による影響を避けるため、sce ファイルの作成した tex ファイルを一時的に「KetCin(G).tex」に変更し、pdf ファイルを作成する。

(3) 作業フォルダに作成された、sce ファイルと図形データの tex ファイル、pdf ファイルの３つをｍｙフォルダに移動して終了する。
３.２

バッチファイルの体験の仕方と注意点(1) ｍｙフォルダに、cindy ファイルを用意する。

pause

※

エラー防止のため、フォルダの名前に半角空白は使わないことを薦める。

:KET_RUN"c:\Program Files\scilab-5.5.1\bin\scilex" -nb -nwni -f %1.sce
If NOT %1==KetCin(G) copy %1.tex
KetCin(G).tex"c:\w32tex\bin\platex" %2.tex
Rem "c:\dviout\dviout" %2.dvi"c:\w32tex\bin\dvipdfmx" %2.dvi
copy KetCin.pdf %1.pdf
del KetCin.pdf
If %3==\KetCinW\ GOTO KET_VIEW
move %1.pdf %3%1.pdf
move %1.tex %3%1.tex
move %1.sce %3%1.sce(2)「c:¥KetCinW」を作業フォルダとして cindyファイルのスクリプトに記述しておく。

(3) cindy ファイルを KC_D.bat へドラッグ＆ドロップすれば、KETCindy が体験できる。

４. KC_DW というバッチシステム

KC_DN というバッチシステムを改良して、pdf作成用 tex のファイル名、および、 KETCindy の作業フォルダの変更に対応した。
親バッチ（KC_DW.bat）の内容:KET_VIEW"c:\Program Files\SumatraPDF\SumatraPDF"%3%1.pdf:END
３.１

バッチファイルの作業内容(0) cindy ファイルの名前が「KetCin」であれば、作業を中断する。

(1) 作業フォルダとｍｙフォルダでの sce ファイ
ルの存在で条件分岐する。

%~dp0KetCin_DW %~n1 %~dp1 KetCin
C:\KetCinW\子バッチ (KetCin_DW.bat) の内容@ECHO off:work_check
If /i %~dp0==%4 GOTO WORK_OKecho.
ECHO 作業フォルダに %3.tex コピーし、一時的に %3(G).tex を作成します。
pause

83
ドラッグ・アンド・ドロップで KETCindy

copy %~dp0%3.tex %4%3.tex:WORK_OK:NAME_check
If /i NOT %1==%3 GOTO NAME_OKecho.
ECHO ファイル名として %1 を使わないこと。
pause
GOTO END:KET_REN
copy %3.pdf %1.pdf
del %3.pdf
pause:KET_VIEW"c:\Program Files\SumatraPDF\SumatraPDF"%2%1.pdf:END
４.１:NAME_OK
cd %4
If /i EXIST %1.sce GOTO KET_RUN
If /i EXIST %2%1.sce GOTO KET_COPY:KET_STOPecho.
ECHO 先に Scishell を実行して下さい。
pause
GOTO END:KET_COPYecho.
ECHO Scilab ファイルが最新でない可能性が あります。

ECHO Scilab ファイルを作業フォルダへコピーします。

pause
If /i NOT %2==%4 copy %2%1.sce %4%1.sce:KET_RUN"c:\Program Files\scilab-5.5.1\bin\scilex" -nb -nwni -f %1.sce
If /i NOT %1==%3(G) copy %1.tex%3(G).tex"c:\w32tex\bin\platex" %3.tex
Rem "c:\dviout\dviout" %3.dvi"c:\w32tex\bin\dvipdfmx" %3.dvi

バッチファイルの作業内容(0) 説明の準備作業フォルダが「c:¥KetCinW¥」であるとして概要のみ説明する。

3 つのファイル KC_DW.bat, KetCin_DW.bat,KetCin.tex が一つのフォルダ（バッチフォルダ）にある状態で作業する。

cindy ファイルの存在するフォルダをｍｙフォルダとする。
※

作業フォルダ、バッチフォルダ、ｍｙフォル

ダは、互いに同じでも違っていてもよいが、ここでは区別して説明する。

(1) KC_DW.bat へ Cindy ファイルをドラッグ＆ドロップすれば、パスやファイル名を読み取って、KetCin_DW.bat へ引数を渡す。

(2) ここから、KetCin_DW.bat の動作です。
作業フォルダ、バッチフォルダ、ｍｙフォルダを比較して、作業に必要なファイルをコピーする場合がある。

(3) 作成された３つのファイル（pdf, sce, tex）をｍｙフォルダへ追加して pdf を表示する。
なお、ｍｙフォルダへ追加される tex ファイルは、input で指定される tex ファイルの名前を Cindyファイルに合わせた名前に変更したものである。
４.２:FILE_MOVE
If /i %2==%4 GOTO KET_REN
move %1.sce %2%1.scemove %3.pdf %2%1.pdf
move %1.tex %2%1.tex
If /i NOT %1==%3(G) del %3(G).tex
GOTO :KET_VIEW(久保)

バッチファイルの体験の仕方と注意点(1) ｍｙフォルダに、cindy ファイルを用意する。
※ エラー防止のため、フォルダの名前に半角空白は使わないことを薦める。

(2) cindy ファイルのスクリプトで指定した作業
フォルダと、KC_DW.bat の最後の引数（第 4 引数）が一致していることを確認する。

84
弓削商船高等専門学校 紀要 第 38 号 (平成 28 年)(3) cindy ファイルを KC_DW.bat へドラッグ＆ドロップすれば、KETCindy が体験できる。

５. KC_DC というバッチシステム

KC_DW というバッチシステムからの改良点は、次の通りである。

(1) 作業フォルダの指定で末尾に ¥ を付けても付けなくてもいいようにした。

If /i EXIST "%~1.sce" GOTO KET_RUN
If /i EXIST "%~2%~1.sce" GOTO KET_COPY:KET_STOP
echo.
echo "%~1.sce" が見つかりません。
echo.
ECHO 先に Scishell を実行して下さい。
pause
GOTO END(2) 作業フォルダ、ｍｙフォルダ、バッチフォル
ダのパスとファイル名に半角空白を利用できるようにした。

(3) 作業フォルダの指定を間違えたときに、メッ:KET_COPY
echo.
ECHO "%~1.sce" が最新でない可能性があります。

セージを出すことにした。

(4) エラーのない準備をした場合は途中でキー入

ECHO "%~1.sce" を フ ォ ル ダ %4 へ コ ピ ー し ま

力待ちをしないことにした。

す。

(5) 描画内容によっては、sci ファイルのコンパイ
ル時に時間がかかるため、Scilab 実行前に sce を実

pause
If /i NOT %2=="%CD%\" copy "%~2%~1.sce""%~1.sce"

行するメッセージを出すことにした。
親バッチ（KC_DC.bat）の内容

cd /D "%~dp0"
KetCin_DC "%~n1" "%~dp1" "KetCin""C:\KetCin W"
子バッチ (KetCin_DC.bat) の内容

cd /D %4:KET_RUN
echo sce ファイルを実行します"c:\Program Files\scilab-5.5.1\bin\scilex" -nb -nwni -f "%~1.sce"
If /i EXIST "%~1.tex" GOTO :KET_RUN2echo.
echo.
echo フォルダ %4 に ファイル "%~1.tex" が見つかりません。

@ECHO off:work_checkecho バッチフォルダと作業フォルダが異なれば、%~3.tex をコピーする。
If /i "%~dp0"=="%CD%\" GOTO NAME_check
echo.
ECHO 作業フォルダに %~3.tex をコピーし、一時的に %~3(G).tex を作成します。
copy "%~dp0%~3.tex" "%~3.tex":NAME_check
If /i NOT %1==%3 GOTO NAME_OKecho.
ECHO ファイル名として %1 を使わないこと。
pause
GOTO END:NAME_OK

echo.
echo cdy ファイルの指定する作業フォルダまたはファイル名を確認して下さい。

echo.
echo 作業を中断します。
echo.
pause
GOTO END:KET_RUN2
If /i NOT %1=="%~3(G)" copy "%~1.tex""%~3(G).tex""c:\w32tex\bin\platex" "%~3.tex"
Rem "c:\dviout\dviout" "%~3.dvi""c:\w32tex\bin\dvipdfmx" "%~3.dvi"
echo この段階で、フォルダ %4 に
echo "%~1.sce", "%~3.pdf","%~1.tex","%~3(G).tex" が存在する。

85
ドラッグ・アンド・ドロップで KETCindy

If /i NOT %1=="%~3(G)" del "%~3(G).tex"
move "%~3.pdf" "%~1.pdf"
echo "%~3.pdf"の名前を"%~1.pdf"へ変更(久保)

６. 最後に
現在でも、KETCindy に利用されている Scilab
が、パスとファイル名に日本語が使えないが、バッチファイルは、パスとファイル名の制約が無いよう:FILE_MOVEecho バッチフォルダとｍｙフォルダが等しけれに気をつけて作成したつもりである。

ば、ファイル移動なし。

したようなバッチファイルは時代遅れになったかも

If /i %2=="%CD%\" GOTO KET_VIEW
move "%~1.sce" "%~2%~1.sce"
move "%~1.tex" "%~2%~1.tex"
move "%~1.pdf" "%~2%~1.pdf"

知れないが、KETCindy の理解に役立った。

:KET_VIEW"c:\Program Files\SumatraPDF\SumatraPDF""%~2%~1.pdf"
:END
５.１

バッチファイルの引数などについて自動で判別する引数が増えたので、整理することにした。

KC_DC.bat は、次の引数を渡して、バッチフ
ァイル KetCin_DC.bat を実行している。なお、「% dp0」は、バッチファイル自身のパスである。
第 1 引数 (% n1) ：cindy ファイルの名前
第 2 引数 (% dp1) ：cindy ファイルのパス
第 3 引数 (KetCin) ：pdf 作成用 tex ファイルの名前（拡張子は付けないこと）
第 4 引数 (c:¥KetCinW¥) ：作業フォルダのパス※ すべての引数を " と " で囲みんだ。これで半角空白を含むパスやファイル名に対応した。
※ ※ 第 1 引数、第 2 引数は cindy ファイルのcindy script により指定されるので、変更する必要はない。

KETCindy は今も発展を続けており、ここで紹介

参考文献[1] CASTEX 応用研究会「KETpic でらくらく TEXグラフ」，イーテキスト研究所，2011.

参考 URL[url 1] 「Ketpic.com」( http://ketpic.com/ )[url 2]「Scilab ユーザーグループ in Japan」( http://scilab.na-inet.jp/ )[url 3]「CinderellaJapan」( https://sites.google.com/site/cinderellajapan/ )