\(\LaTeX\)による詰棋書の組版(8) 複数の柿木ファイルからまとめて変換

さて今回は複数の柿木ファイルから、まとめて図面を組版する方法について説明します。

が、その前にちょっと【命令.awk】を改良しておきます。

柿木ファイルの詰将棋情報は下記のようになっています。

これらのうち「作品名」「作者」「発表誌」「発表年月」は重要です。
柿木ファイルに入力して、そこからデータを拾うようにします。
他の項目は当面不要ですが、折角なので全部つみき形式に拾うように前回の【命令.awk】を拡張して【柿木2つみき.awk】を作っておきます。

このスクリプト(命令書)で前回の【図巧001.ki2】を処理すると、次のような【図巧001.txt】が得られます。

この\番号{}…などはまだ定義していませんので、貼り付けてコンパイルはまだやらないでください。

今回は次のような作業フォルダを用意してください。

準備していただいた、沢山の棋譜ファイルの入ったフォルダにgawk.exeなどをコピーします。

ki2を沢山用意していない方は「詰将棋つくってみた」課題7と課題8の投稿作品をまとめておきましたので、利用してください。⇒ ltex0927.zip

さて複数の柿木ファイルを変換するのは実に簡単です。
【実行.bat】をエディタで開いて、次のように変更・保存してください。

gawk -f 柿木2つみき.awk *.ki2 >>つみき形式.txt

-f で指定するスクリプト(命令書)ファイルを【柿木2つみき.awk】に変えます。
また 図巧001.ki2 を *.ki2 に変えます。これは「~.ki2」の形のファイルをすべて読めという意味です。
最後に > を >> に変えます。
これはすべて【つみき形式.txt】に追記しなさいという意味です。

たったこれだけです。
実行してみてください。をダブルクリックするとというファイルができたはずです。
これをエディタで開くと…

さてこのファイルを開いたまま、久しぶりにCloudLaTeXにログインしましょう。
【つみき形式.txt】から^Aで全選択し、^Cでコピーします。
CloudLaTeXの画面で
\begin{document}
\twocolumn

の下で^Vでペーストします。

さらにプリアンブル(\begin{document}の上の部分)に次のようにマクロ定義を追加します。

これでコンパイルは可能になりますが、まだ図面が並んでいるだけです。
先頭部分に次のようにつけ加えます。

さらに\def\図面終{}の部分に次のようにつけ加えます。

これで準備が終わりました。
コンパイルしてみてください。

これで図面だけでなく、作者名、タイトル、受賞、発表メディア、発表年月も表示されました。

え?問題番号も欲しい?
それでは、そこまでやってしまいましょう。

\図面始{}の先頭部分に次のように書き加えます。

これでアンソロジーの問題図部分は完成したと言っても良いのではないでしょうか。

次回は柿木ファイルに入力した作意手順を取り込む方法について説明します。


今回はAWKも\(\TeX\)も進めたので、かなり説明不足です。

AWKの【柿木2つみき.awk】は説明に書いたように詰将棋情報を拾い出すだけではなく、つみき形式にした後に読みやすくするためにいくつか余分に出力する行を追加しています。
是非、読んでみてください。

また\(\TeX\)ではさらにいくつもの行を加えました。

説明していませんでしたが、デフォルトのママでは図面が縦に3つ入ったり入らなかったりしたので

\documentclass[a4paper,10pt]{jsarticle}
\usepackage[dvipdfmx]{graphicx}
\setlength{\topmargin}{-20mm}
\setlength{\textheight}{255mm}
\setlength{\columnsep}{10mm}

というようにa4サイズに10ptと指定し、トップマージンを減らしてテキスト部分の縦の長さを大きく取りました。まだ2段組の間を10mmに設定しています。

\def\TYTLE{}
\def\SAKUSYA{}
\def\MEDIA{}
\def\YMD{}
\def\PRIZE{}

最初にいくつか空の定義をしたのは、柿木将棋の仕様で入力されていない項目は、出力されないためです。
例えば作者名が入力されていない場合、「作者:  」となるのではなく、一切出力されません。
その場合、一番最初の\図面始{}のところでエラーになってしまいます。

\newcounter{BANGO}
\setcounter{BANGO}{0}

\def\図面始{
\stepcounter{BANGO}
{\large\bf 第{\theBANGO}番\hspace{1zw}\SAKUSYA}
\hfill
\TYTLE

この部分は読めばなんとなく理解できると思います。

奥村晴彦先生の『美文書作成入門』は第1版から第78版まで全部購入しました。(最新の第8版は買っていない)
なんと第7版では\newcounter{}が解説されていないことに気づきました。
試験問題にしても、演習問題集を作るにしても必須の命令なのになぜでしょう?
色々な事情があるのでしょうが、古い版を処分してしまったことを後悔しています。

\SAKUSYA, \MEDIA, \YMD などは変数として利用していることがお解りでしょう。

\def\図面終#1{
\put(3,2){持 駒 \large#1}
\end{picture}
\def\TYTLE{}
\def\SAKUSYA{}
\def\MEDIA{}
\def\YMD{}
\def\PRIZE{}
}

変数は\図面終{}のところでリセットしておきます。
本当は全部の変数をリセットしなければいけません。

\def\作者#1{\def\SAKUSYA{#1}}
\def\タイトル#1{\def\TYTLE{#1}}
\def\発表誌#1{\def\MEDIA{#1}}
\def\発表年月#1{\def\YMD{#1}}
\def\番号#1{}
\def\出典#1{}
\def\手数#1{}
\def\完全性#1{}
\def\分類#1{}
\def\受賞#1{\def\PRIZE{#1}}
\def\備考#1{}
\def\ファイル名#1{}

\ファイル名{}は今回は使っていませんが、実際には校正の段階までは出力し、最後の段階で消すという使い方をします。

これらの\defという命令は同じ命令が既に使用されているかをチェックしません。
それで上のような使い方が可能なのですが、使う際には注意してください。
たぶん学校では\newcommand{}を使えと教わると思います。

今回は gawk -f ~.awk *.ki2 >> ~.txt を使いましたが、最終的にどの作品を採用するか未定だったり、ヴァージョンがいくつかあって検討中だったりする場合、1つの柿木ファイルから1つのつみき形式ファイルをつくって、それを\(\TeX\)では \input{} を使って読み込むという方法もあります。

当初、その方向で書いていたのですが、解説も含めると最終的には細かい調整のために \input{} のままでは面倒なので、書き直しました。

「\(\LaTeX\)による詰棋書の組版(8) 複数の柿木ファイルからまとめて変換」への2件のフィードバック

  1. 柿木が出力していないときは、例えば

    \タイトル{}

    と awk で出力するようにしておけば、LaTeX で変数の初期化などは簡単になるのでは?

    以下の要領。

    /後手の持駒:/{
    printf(“\\タイトル{%s}\n”,TITLE)
    printf(“%—————–\n”)
    printf(“\\ファイル名{%s}\n”,FILENAME)
    printf(“\\図面始\n”)
    m=0#———————-段番号の初期化
    TITLE = “”
    next
    }
    ….

    /作品名:/{
    gsub(/作品名:/,””,$0)
    TITLE = $0
    next
    }

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください