お知らせ+活動記録+たわごと

HP と Twitter を補完するとともに、互いの密接な連携を図るため、本ブログを開設した。三位一体を目指す。情報提供、広報活動、教育・啓蒙活動の一環として、肩の力を抜き、冗長性を廃し、簡にして要を得た文章を書くよう心がける。
<< August 2016 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 >>
 
MOBILE
qrcode
PROFILE
無料ブログ作成サービス JUGEM
 
えり抜きエントリー選集
  • 2011.03.03: 材料科学者トップ100にランクイン
  • その他 | 12:30 | comments(0) | - | - |
    岡山大学での講習会と講演会(まとめ)
    「泉 富士夫の粉末回折情報館」の新着情報に掲示した岡山大学での講習会・講演会(2016年7月11〜13日)に関する会告と開催報告に加え、同大学の関連 Web ページへのリンクを合体したのが本エントリーである。

    1. 2016年6月3日(金)講習・講演会(岡山大学)のお知らせ

    2016年7月11日(月)・12日(火)に岡山大学工学部

    「RIETAN-FP・VENUS システムと外部プログラムによる粉末構造解析」講習会
    ポスター | 要旨

    を開催することが決まりました。日本中の学生、研究者、技術者の(再)教育を目指しているため、学外の方でも参加登録さえしていただければ受講できます。

    11日はリートベルト法、パターン分解、構造モデルの構築、最大エントロピー法 (MEM) などの粉末回折データ解析技術について初心者向きに講義し、12日を実習に当てます。Windows 上での実習には秀丸エディタ (+統合支援環境), RIETAN-FP v2.82, VESTA v3.3.8, gnuplot v5.0.3, WinPLOTR, DICVOL, ORFFE, lst2cif, cif2ins, ALBA, superflip, EDMA, FOX, Dysnomia + MPF_multi などの無料プログラムを使います。昨年10月に龍谷大学で開催した「RIETAN-FP・VENUS システムと外部プログラムによる粉末構造解析」で使用した無料プログラム群の一部を更新し FOX を追加したものに相当し、特製インストーラーにより C:¥Program Files フォルダーに一挙にインストールできます。このインストーラーは後日、自分の Windows PC でもお使い頂けます。

    講義には百数十枚のスライドを使いますが、カラー印刷の経費と手間をカットするため、参加者にはその PDF ファイルを配付します。実習では上に列挙したプログラムをインストールした後、次から次へと実行していくため、メモをとり続けるのは大変です。そこで実習時の操作を箇条書き形式で逐一記述した LaTeX 文書を参加者に配付し、後で各自が実習内容を再現できるよう配慮します。これほど出し惜しみしない講習会は希でしょう。

    7月13日(水)には理工系の方々を対象に

    「英文執筆とテキストデータ処理 ― 私の流儀」

    と題して講演します。前半は長く英語論文の添削に従事してきた経験に基づいてまとめた理工学一般で通用するチュートリアル「科学英語論文執筆の手引き」を眺めながら、キーポイントを解説していきます。後半はテキストファイルを sed や awk などの UNIX ツールや gnuplot や LaTeX などのフリーソフトウェアにより CUI (Character User Interface) を通じて処理することの重要性と効率の高さを説きます。余興として裏技 mcz を披露した後、RIETAN-FP の解析結果から CIF (Crystallographic Information File) 、グラフ、結晶模型、電子密度分布図などを作成し、それらを LaTeX で PDF ファイルとして統合し、さらには和訳するという一連の手続きを実演します。すべて自前のソフトで作成したデータだということを誇りに思います。

    参加者には「科学英語論文執筆の手引き」、プレゼンテーション用 PDF ファイル、謎の超弩級プレゼント(希望者限定)を差し上げます。講習・講演会のいずれも参加登録費は無料です。個人的社会貢献として催すため、講義・講演料もゼロ円とするよう大学にお願いしました。

    三日連続で人前に立つのはかなりきついですが、体調を崩さぬよう気をつけます。盛会となれば馬力が一段と上がりますので、奮ってご参加ください。

    2. 2016年7月16日(土)全力講習会・講演会の開催報告

    岡山大学工学部で7月11・12日に開催した「RIETAN-FP・VENUS システムと外部プログラムによる粉末構造解析」講習会は90名弱の参加登録者を集め、盛会裏に終わりました。学外の受講者がかなり多かったのが特徴です。中国四国・近畿・中部・関東・東北の各地方はもとより、なんと外国在住の方までおられ、明らかにローカルな催しからの脱却を果たしていました。当初会場に予定していた教室では受講者を収容し切れなくなったため、より広い教室に変更したにもかかわらず、そこもほぼ満杯という望外の人気を博しました。

    12日の実習は昼食抜きの過酷なデスマッチとなりました。多少のトラブルこそ勃発したものの、渾身の力を振り絞った実地指導と LaTeX で箇条書きにした手順書は好評だったようです。翌13日の「英文執筆とテキストデータ処理 ― 私の流儀」講習会は、力余って予定時間(1時間半)を60分近く超過してしまいました。やや冗長な上、脱線気味だったことを反省しています。

    再配布禁止条件の下で参加者だけに差し上げる「謎の超弩級プレゼント」とは、RIETAN-FP_manual.pdf をタイプセットするのに必要な全ファイル(*.tex, *.bib, my.bst, *.pdf)のアーカイブファイル(56.7 MB)に他なりません。私はもう先が短いです。これらを死蔵したままこの世を去るよりは、多数の図、表、数式、文献を含む巨大文書の高品質・高速組版技術の公開を通じて社会に貢献すべきだという心境を抱くに至りました。

    事前の予想を大幅に超す参加登録者数に励まされつつ体力の限界に挑み、三日間のワンマンショー(+懇親会)を無事乗り切りました。献身的に支援して頂いた教職員の方々と受講者の皆様に厚く御礼申し上げます。今回の成功に意を強くしましたので、来年度も実習主体、参加費無料、無報酬の講習会を中部地方以西で開催するつもりです。ご期待ください。

    3. 2016年8月19日(金)岡山大学の関連 Web ページ(新着ニュース)

    共同利用機器利用講習会「RIETAN-FP・VENUSシステムと外部プログラムによる粉末構造解析」を開催
    RIETAN-FP v2.8X リリース時の掲示(まとめ)
    RIETAN-FP ユーザーのために便宜を図るべく、「泉 富士夫の粉末回折情報館」の新着情報に掲示した RIETAN-FP v2.8X に関する全記事を一つのエントリーとして合体した。RIETAN-FP v2.8 が小刻みに改善され v2.82 にまで至った経緯が把握できよう。

    1. 2016年5月6日(金)新 RIETAN-FP・VENUS システム配付ファイルの公開

    RIETAN-FP v2.8 の完成を受け、Windows・OS X 用 RIETAN-FP・VENUS システムの配付ファイル三つを先ほどアップロードしました。遅れに遅れて約半年ぶりのリリースとなったのは、人材育成事業(Nanotech CUPAL)を優先せざるを得なかったためです。中でも百数中枚に達するスライドの英訳には疲れ果てました。

    主な変更点は RIETAN-FP_manual.pdf の最終パート「多目的パターンフィッティング・システム RIETAN-FP の新機能について」中の
    5 X線分散補正項と質量減衰係数のグラフ化
    27.5 反射リストを CIF に追加するマクロ refln(「反射リストからデータを抽出して CIF を作成するシェルスクリプト」参照)
    27.6 LaTeX 関係のマクロ
    に記しました。RIETAN-FP_manual.pdf は documents.zip の展開により生成する documents フォルダーに入っています。同フォルダー中の Readme_*.pdf 4つも改訂しました。Windows 版に同梱しているフリーソフトウェアのうち、gnuplot は v5.03 に、Ghostscript は v9.19 にバージョンアップしました。OS X 版のユーザーは gnuplot を v5.03 にアップデートしてお使いください(「RIETAN-FP への gnuplot の導入」参照)。Plot と xdc を使うには最新版が必要です。Windows 版ではさらに RIETAN_VENUS¥Commands フォルダーにプログラミング言語 AWK の処理系 gawk.exe (refln で使用) と pdftk.exe (PDF ファイル処理コマンド、Windows 用 cif2pdf で使用) を追加しました。

    92元素に対する質量減衰係数(mass attenuation coefficient)ρm のフォトン・エネルギー依存性をテキストファイル mac.tbl として保存しました。これに伴い、多相試料でミクロ吸収 (microabsorption) を補正する際、構成元素の ρm が自動計算されるよう改善されました。

    hoge.ins で NPRINT = 2 に設定して RIETAN-FP を実行した後、xdc マクロを選択し元素名を指定すると、X線分散(俗に言う異常分散)の実数項 f ' と虚数項 f ''、ρm が波長(フォトン・エネルギー)の関数としてプロットされます(下図)。



    吸収端の波長をブラウザーで表示するという離れ業も楽しめます。この新機能は放射光だけでなく特性X線でも使えます。hoge.ins において純粋な化学種 (pure chemical species) として任意の元素名をダミー入力して当該元素のグラフを描くという裏技も忍ばせました。一般に物質によるX線の吸収スペクトルを測定すると、吸収端より高エネルギー側で吸収が激増します。急激に吸収が強まる端っこという意味で吸収端と呼ばれます。これは 殻電子のような内殻電子を励起するのに必要なエネルギーに他なりません。吸収端より高エネルギー側では、 殻や 殻から電子が落ちてくるとき発生する蛍光X線も強まります。xdc が出力するグラフはたとえば Cu Kα 特性X線で粉末回折データを測定するとき Ni フィルターで Cu Kβ 線をカットし、Fe を主成分として含む試料でバックグラウンドが高まるといった現象の理解に役立ちます。Nanotech CUPAL と名工大向けの教材として本新機能を支援環境に加えました。

    LaTeX 用マクロ cif2pdf は
    1. hoge-cif: lst2cif と refln で作成した結晶構造データ、幾何学的パラメーター、反射リストなどの CIF (Crystallographic Information File)、
    2. hoge.pdf: RIETAN-FP によるリートベルト解析結果に基づいて Plot マクロで作成した観測・計算・差パターン、
    3. hoge-struct.pdf: VESTA で作画した結晶模型、
    4. hoge-density.pdf: VESTA で描いた電子・干渉性散乱長密度分布のイメージ、
    5. hoge-mscs.pdf: MSCS マクロで作成した Williamson–Hall あるいは Halder–Wagner プロットのグラフ、
    6. append.pdf: hoge-report.pdf の末尾に追加すべき PDF(たとえば xdc の出力 xdc-*.pdf や "International Tables for Crystallograhy," Vol. A 中の特定空間群のページ)
    を合体し、hoge-report.pdf(英語)を作成します。cif2pdf のhoge-report.tex作成部分の実体は FORTRAN 90 プログラム cif2ins に他なりません。引き続き E2J を実行すると、日本語文書 hoge-report-j.pdf に「翻訳」されます。組版エンジンには高速性を重視し pdflatex (cif2pdf) と platex + dvipdfmx (E2J) を採用しました。両マクロを使うのに必要不可欠な TeX Live のインストールについては「OS X・Windows 用 TeX Live のインストール」を参照してください。

    CIF は単なるテキストファイルに過ぎず、科学情報を過不足なく伝えるだけの表現力を持ち合わせていません。理工系文書に頻出するイタリック、上付き、下付き、ボールド、オーバーライン、ギリシャ文字などの書体や数式については、完全にお手上げです。そこで CIF を文書化するプログラムが過去に多数出現しましたが、図や付録を自動挿入できる上、日本語に「翻訳」までしてくれる cif2pdf + E2J のような賢いソフトは寡聞にして存じません。画期的なユーティリティーと言ってよいでしょう。

    簡易タイプセット用マクロ Typeset, BibTeX, MakeIndex による手っ取り早く高速な組版も実現しました(「Jedit X 用 LaTeX 組版支援環境」参照)。OS X では PDF ファイル閲覧プログラム Skim をインストールしてから、お使いください。これら三つはあくまで自分用のマクロであり、人様に使って頂くことは念頭に置かずに設計・製作しました。従来、LaTeX 文書のタイプセットには TeXShop を愛用してきましたが、タブでウィンドウを切り換えられない旧態依然の GUI には失望していました。TeXShop の使用を前提とする「Mac 用 TeX による英文・和文のタイプセット」という文書を公開している自分ですが、TeXShop にはもう見向きもしていません。ここまで LaTeX に肩入れするのは、商用ソフト(Microsoft Word)の鈍重さと不適切なカーニングに日ごろ辟易していることに加え、優れた無償ソフトを普及させたいと願っているためです。cif2pdf や E2J で LaTeX に慣れ親しんでおけば、自ずと LaTeX の世界に引き込まれていくと思われます。

    グラフではセリフでなくサンセリフを選択することが望ましいという "Gnuplot in Action" 中での指摘に触発され、Plot, MSCS, xdc マクロで作成するグラフ中のフォントを Times から Helvetica に変えました。gnuplot スクリプトファイル hoge.plt を書き直せば、欧文基本35書体の PostScript フォントに変更できます。フォント名は RIETAN-FP_manual.pdf の17.7.1に列挙しておきました。さらに上図と同様に、リートベルト解析パターンの横軸(上部)に格子面間隔 d の目盛、数値、ラベル(d/Å)を付けられるようにしました:



    このグラフではタイトルと信頼度の指標4つも表示しています。ご覧のように、計算パターンの色は cyan に戻しました。

    Windows 用プログラムの起動に使うバッチファイルのうち cif2ins.bat, Plot.bat, refln.bat, RIETAN.bat, Typeset.bat は FINDSTR + (&& or ||)(「FINDSTR 実行後の ERRORLEVEL に応じた条件分岐」参照)により文字列検索後に場合分けするよう改善しました。洗練されていない FOR 文が減ったのは実に良い気分です。UNIX 系コマンドがインストール済みの環境で MPF_multi.command が正常に動作しないという不具合を修正しました。PATH 指定の順番が不適切でした。また念のために Plot.bat で遅延環境変数を展開するよう改めました。

    RIETAN-FP の入力ファイル hoge.ins のひな形に多少手を入れました。とくに ORFFE 用入力(「ORFFE による結合角と二面角の計算」参照)の部分には大なたを振るいました。適切な最大結合距離を指示した 201 命令さえ hoge.ins に含まれていれば、ORFFE を2回続けて実行するだけで全結合角を計算できることを考慮しました。それでもまだ完璧からは程遠いでしょう。意味不明な箇所や誤りがありましたら、遠慮なくご指摘ください。なお、Cimetidine のリートベルト解析において構造パラメーターを固定していたことに気づき、すべての可変パラメーターを精密化するよう Cimetidine.ins を変更しました。

    その他、細かい修正は多数にのぼりますが、省略します。

    従来、OS X 版では RIETAN_VENUS/template_commands フォルダーに入っているシェルスクリプト *.command のひな形から解析ファイル専用のシェルスクリプトを RIETAN_VENUS/commands フォルダーに生成するサービスを提供してきましたが、今回、廃棄処分に踏み切りました。MPF_multi.command は commands_common フォルダーに移しました。Jedit X 上で動作する RIETAN-FP・VENUS 統合支援環境に比べると使い勝手が今一つだからです。老骨に鞭打って孤軍奮闘している自分としては、メンテナンスの手間を省けるのは助かります。

    これまで OS X 用支援環境におけるショートカットの設定には BetterTouchTool の使用を推奨してきましたが、システム環境設定の [キーボード] で [ショートカット] タブをクリックして設定するオーソドックスな手続きに立ち戻ることにしました(Readme_scpt.pdf, 2.3.3参照)。 [キーボード] で設定したショートカットがしばしば無効になるという不具合が El Capitan では解消したためです。[キーボード] による設定には、登録したショートカットがマクロのプルダウンメニューに表示されるという利点があります。

    2. 2016年5月15日(日)RIETAN-FP・VENUS システムの更新

    RIETAN-FP を v2.81 にバージョンアップし、9日前に公開したばかりの RIETAN-FP・VENUS システムを早々とマイナーチェンジしました。

    Gnuplot が "terminal postscript eps ....." コマンド("gnuplot 5.0 ― An Interactive Plotting Program", p. 225参照)により EPS 形式の PostScript ファイルを出力するよう変更した結果、Windows・OS X 版のいずれにおいても pdfcrop によるマージンの切り取りが不要になりました。すなわち TeX Live をインストールしていなくても、余白のない PDF ファイルが得られます。処理速度が遅い pdfcrop を実行せずに済むため、グラフが表示されるまでの時間がかなり短縮されます。

    Windows 版では、32ビット版 Ghostscript、すなわち gswin32c.exe によって PostScript ファイルを PDF ファイルに変換するよう変更しました。Ghostscript パッケージに含まれる pdfcrop や pdfcrop14 などは EPS ファイルを正常に処理できないためです。

    hoge.ins 中で NPRINT = 2 に設定すると "_pd_peak_intensity = ....." が2回出力され、その結果 refln マクロでトラブルが発生するというバグを解決しました。

    その他、5つのマニュアルと RIETAN-FP 用入力ファイルのひな形 hoge.ins を少しずつ修正しました。



    ここ何年か、RIETAN-FP の新バージョンを公開するたびに講演会や研究会でお披露目するのが恒例となっています。それらの集会までに RIETAN-FP をバージョンアップせねばならぬという状況に自らを追い込むべく、意識的にそう心がけてきました。偶然ですが、今回も RIETAN-FP v2.81 と過去一年間に開発・改善した周辺ソフトについて紹介する機会に恵まれました:

    「RIETAN-FP・VENUS システム ― 最近の進歩」
    日時:6月1日(水)16:30〜17:30、場所: ファインセラミックスセンター(名古屋市熱田区)

    MacBook Pro による実演を交えながら熱弁を振るいます。当日までに gnuplot の pdfcairo ターミナルを使うスクリプトファイル hoge.plt を出力する RIETAN-FP v2.82 を完成させ、GUI 抜きのグラフ化エンジン gnuplot+cairo+pango 複合体の利点、すなわち高速性と高品質イメージ・フォントを最大限に活かせるようにします。また OS X 用 gnuplot が専用インストーラで使えるようになります。

    部外者のご来聴も歓迎します。ご希望の方はあらかじめ担当者(小西)に参加登録のメールをお送りください。折り返し、アブストラクトを添付した受付メールをお送りします。

    3. 2016年5月20日(金)RIETAN-FP・VENUS システムの微修正

    5月16日以降、
    • バッチファイル Plot.bat, cif2ins.bat, cif2pdf.bat(Windows 版)
    • それらに相当するシェルスクリプト Plot.command, cif2ins.command, cif2pdf.command(OS X版)
    • RIETAN-FP のひな形ファイル BiCoO3.ins と Cu3Fe4P6.ins
    に誤りが見つかったため、以下のように修正し、急遽 Windows_versions_20160520.zip とOS_X_versions_20160520.dmg を RIETAN-FP・VENUS システム配布ファイルにアップロードしました。

    Plot.bat と Plot.command で裏技が正常に動作しないのを修正しました。Gnuplot スクリプトファイル hoge.plt 中で set terminal postscript eps ..... に乗り換えたのを反映させていなかったのが原因です。

    cif2ins.bat, cif2pdf.bat, cif2ins.command, cif2pdf.command において cif2ins 実行形式プログラムの引数(ファイル名)が一部間違っていたのを正しました。pdfcrop を使用していた時のファイル名に留まっていた他、余分な引数が一つぶら下がっているスクリプトがありました。

    RIETAN-FP v2.8 以降、不要になった質量減衰係数の入力行が多相試料のひな形ファイル BiCoO3.ins と Cu3Fe4P6.ins に残存していたことがパワーユーザーから指摘されたため、削除しました。

    4. 2016年6月14日(火)RIETAN-FP v2.82 のリリース

    RIETAN-FP を v2.82 にマイナーチェンジし、RIETAN-FP・VENUS システムの配付ファイル三つを更新しました。

    v2.82 では gnuplot における terminal(出力先)を古典的な postscript eps から pdfcairo に変更しました。4月中旬に入手した "Gnuplot in Action", 2nd ed. が pdfcairo への移行を促してくれました。pdfcairo の採用に伴い、フォントやマークのサイズは元通りになりました。目盛がグラフの境界線に比べ約半分の線幅に固定されてしまうという postscript eps 使用時の深刻な不具合も解消しました。また pdfcairo はグラフの余白を自動的に切り取るため、TeX Live の pdfcrop や Ghostscript の gswin32c コマンドはもはや不要です。したがって、これまで Windows 版に同梱していた Ghostscript は削除しました。

    pdfcairo は余白をカットした後、PostScript コードを経由せずに PDF ファイルを直接出力するため、Plot, MSCS, xdc マクロの実行時間が大幅に減りました。

    残念ながら、pdfcairo には軸の目盛りに対する数値が負の場合、先頭にマイナスでなくハイフンが置かれるという瑕疵があります。もっとも負の値がプロットされるのは xdc の y 軸だけなので、さほど実害はありません。どうしても気になるという方は、ブログエントリー「OS X 用 gnuplot で pdfcairo ターミナルを使うための手続き」にこの問題に対処する方法を記しましたので、ご参照ください。当該エントリーには pdfcairo への切換時に獲得した重要な知識と情報を記録しておきました。pdfcairo 活用の一助となれば嬉しいです。

    従来はタイトルや軸のラベルの一部が欠落しないよう一部の文字列の先頭あるいは末尾に "¥n"(改行コード)を挿入していました。このような苦し紛れの対症療法は好ましくないと判断し、gnuplot スクリプトファイル *.plt 中に "set margins <left>, <right>, <bottom>, <top>" コマンドを挿入しました。

    OS X 上では gnuplot を Homebrew でなくスタンドアローンのインストーラーで Applications フォルダーにインストールするよう変更しました。この gnuplot は二次元グラフィックス・ライブラリー cairo と多言語テキスト配置・レンダリング用ライブラリー pango を包含しています。旧バージョンの Mac ユーザーはお手数ですが、上記エントリーの記述に従って gnuplot をアンインストール・再インストールするようお願いします。

    5月6・15日と本日の最新情報から、gnuplot の徹底活用を目指し私がいかに精進してきたかを読み取れるでしょう。力不足のために短期間に3回も配付ファイルを更新し、拙作ソフトのユーザー様を徒に混乱させたことをお詫びします。

    5. 2016年7月19日(火)RIETAN-FP・VENUS システムの微修正

    RIETAN-FP・VENUS システムのマニュアル類を収めたアーカイブファイル documents.zip を更新しました。RIETAN-FP_manual.pdf 中のタイプミスを修正するとともに、数値–単位間のスペースを一文字分の空白の 3/18(LaTeX では '¥,')に統一しました。

    6. 2016年8月10日(水)秀丸エディタ用設定ファイルの改訂

    Windows 用 RIETAN-FP・VENUS システムをほんの少しだけ改善し、Windows_versions_20160810.zip としてアップロードしました。といっても、RIETAN-FP のバージョンは 2.82 のままです。

    秀丸エディタ用設定ファイル RIETAN-FP.key と RIETAN-FP.reg を単一ファイル RIETAN_VENUS.hmereg に統合しました。「その他 > 設定内容の保存/復元」で "設定情報をファイルから復元する" のラジオボタンをチェックした後、RIETAN_VENUS.hmereg を読み込み、レジストリに設定情報を書き戻します。統合支援環境のセットアップ時間が少しだけ短縮されます。つい最近まで拡張子 .hmereg のファイルに全設定を保存できることを寡聞にして存じませんでした。詳しくは、秀丸エディタヘルプ中の「秀丸エディタにおける設定内容の保存/復元」をお読みください。Readme_macros.pdf にもその変更点を反映させ、マニュアル類のアーカイブファイル documents.zip を更新しました。

    なお、mcz.bat という謎のバッチファイルを Batch_files フォルダーに忍ばせておきました。実習時の余興用なので、マニュアルには記載していません。
    OS X 用 gnuplot で pdfcairo ターミナルを使うための手続き
    最近購入した "Gnuplot in Action", second edition の 14 ページに
    A major breakthrough is the development of a family of terminals that are all based on a single set of contemporary libraries for graphics and text rendering. Because these terminals all share the same back end, you can now create bitmaps (PNG), vector images (PDF), and graphs for interactive viewing (wxWidgets) with consistent appearance across all formats. Gnuplot takes advantage of the cotemporary features of the underlying libraries to produce high-quality graphs through the use of over-sampling, anti-aliasing, and so on.
    .....
    In the past, gnuplot's support for PDF was relatively weak, particularly in comparison to the very full-featureed PostScript terminal. This situation has now been reversed, and the Cairo-based PDF terminal is probably to be preferred over the classic PostScript terminal.
    という注目すべき指摘があった。その的確な現状認識に触発され、RIETAN-FP v2.81 に至るまで長く出力先に指定してきた gnuplot の postscript ターミナルを pdfcairo ターミナルに切り換えようと決意した。グラフの枠と目盛りの線幅を同一にできないという postscript ターミナルの不具合には我慢がならなかった。以前 pdfcairo の利用を検討した際には、Homebrew を通じて OS X 上での gnuplot と二次元グラフィックス・ライブラリー cairo とを連携させる方法が突き止められず、あえなく挫折した。今回は不退転の覚悟で望み、徹底的に調査した。その結果、習い覚えたノウハウとテクニックを以下に報告する。

    OS X 用 gnuplot は、次の手続きに従ってインストールすることを推奨する:
    1. すでに gnuplot をインストール済みだったら、必ずアンインストールする。たとえば Homebrew でインストールした場合は、ターミナルで "brew uninstall gnuplot" と入力してアンインストールする。
    2. 古いバージョンの gnuplot が残っている場合は削除用コマンドが指示されるので、その通り入力する。
    3. Gnuplot の Web サイトの contributed executables for OSX でインストーラー gnuplot-5.0.3-quartz.pkg をダウンロードする。
    4. gnuplot-5.0.3-quartz.pkg をダブルクリックして gnuplot 5.0.3 をインストールする。
    5. Applications フォルダーに gnuplot(実体は Gnuplot.app)が生成したことを確認する。
    readme.text に明記されているように、こうしてインストールした gnuplot は cairo に加え多言語テキスト配置・レンダリング用ライブラリー pango も包含しており、pdfcairo を出力先とする RIETAN-FP v2.82 と互換性がある。OS X 版 RIETAN-FP の出力する hoge.plt における文字のシフトやマージンはこの gnuplot 用に最適化されている。

    ありがたいことに、Windows 用 RIETAN-FP・VENUS システムに同梱している gnuplot では cairo + pango、ひいては pdfcairo が標準で使える。ただし、fontscale と offset の最適値は OS X 用と微妙に異なる。

    出力先として pdfcairo を指定したとき、gnuplot スクリプトファイル中でギリシャ文字や記号をどのように記述すればいいのかについては、RIETAN-FP v2.82 以降が出力する *.plt を参照されたい。恰好の手本となるだろう。その際の手間を減らすために、RIETAN-FP・VENUS システムのマクロが出力する *.plt ファイル中の8進コード(\+3桁の8進数の繰り返し)を以下に列挙しておく:
    \316\262: β
    \316\270: θ
    \316\273: λ
    \316\274: μ
    \302\260: ° (度)
    \303\205: Å
    \342\210\222: −(マイナス; UNICODE: U+2212)
    \342\200\262: ′ (プライム)
    \342\200\262: ̋ (ダブルプライム)
    特定文字の8進コードを知るには、二つの Web ページ「UTF8エンコードをデコードする」「文字コード変換」で変換するとよい。その際には「Unicode 対応 文字コード表」も役立つ。イタリックの書体にするには、たとえば θ の場合 "{/:Italic \316\270}" と入力する。

    一般にグラフ中のラベルや数値には sans-serif 系のフォントが適している。事実、terminal pdfcairo のデフォールトは sans である。デフォールト・フォントのまま8進コードを書くと、ギリシャ文字なども sans-serif 書体で出力される。"Gnuplot in Action" p. 215 には "If a sans-serif font is selected as the default font for a terminal, then the font subsystem will attempt to find sans-serif glyphs for all requested characters even for special symbols." と書かれている。ただし Windows 10 ではたとえば
    set terminal pdfcairo ..... font "Arial" fontscale 0.5
    というように sans-serif 系フォントを明示するべきである。デフォールトのフォントが斜体のフォントスタイルを含んでいないと、標準文字が出力されてしまうためだ。C:¥Windows¥Fonts フォルダー内の Arial を見ればわかるように、標準、極太、斜体、太字、太字・斜体の TrueType フォントが使える。Arial を指定した場合もギリシャ文字などが sans-seruf 書体で出力されることに変わりはない。

    イタリックでない文字は、たとえば
    {/Symbol \260}: ° (度)
    {/Symbol \242}: ′ (プライム)
    というように PostScript 文字コードを書いてもよい。ただし sans-serif 書体にはならない。

    上述の8進コードや PostScript 文字コード (Symbol) は OS X、Windows を問わずに通用する。Unicode のテキストファイルを出力できない高級言語でビルドしたプログラムで gnuplot スクリプトファイルを出力する場合に役立つ。一方、テキストエディターでスクリプトファイルを編集するのであれば、「RIETAN vs. Z-Rietveld」に例示したように "set encoding utf8" という行を挿入し、それ以降にギリシャ文字、記号、かな漢字などを直接書いて、UTF-8エンコーディングでファイルを保存する方が明らかに楽だ。

    残念ながら、pdfcairo には manor tics(主目盛)に対する数値が負のとき、数字の前にマイナスでなくハイフンが付いてしまう(「How to make Gnuplot use the “unicode minus” sign for negative numbers」参照)。ハイフンでは短すぎるため、仕様でなくバグとみなすべきだ。いずれは解決するのだろうが、早急な修正を望む。この不具合は、代わりの文字列を指定して切り抜けることができる。たとえば xdc により Ni のX線分散項を波長に対してプロットする場合、"set ytics ....." という行を
    set ytics nomirror offset 0.2, 0 font ",".IVSIZE
    set ytics ("\342\210\22215" -15, "\342\210\22210" -10, "\342\210\2225" -5, "0" 0, "5" 5,) # Major tics
    set ytics add ( -14 1, -13 1, -12 1, -11 1, -9 1, -8 1, -7 1, -6 1, -4 1, -3 1, -2 1, -1 1, 1 1, 2 1, 3 1, 4 1) # Minor tics
    に置き換える。二重引用符の中には \342\210\222(マイナス)を置き、y 軸の数値をすべて入力する。Minor tics の目盛りは "set ytics add" で追加する。

    terminal pdfcairo はフォントを指定しなければ、英数字はもとよりギリシャ文字や記号などもグラフに最適の sans-serif 書体に統一して出力するという利点を持つ。pdfcairo へのグラフ出力ではデフォールトで余白が切り取られることも、利便性の高さと処理時間の短縮に貢献する。得られた PDF ファイルは LaTeX, Word, Adobe Illustrator, Inkscape, Keynote, PowerPoint などの文書に直接挿入できる。今後は pdfcairo をフル活用していく所存である。その第一歩として、当面 RIETAN-FP v2.28 の開発に注力する。
    FINDSTR 実行後の ERRORLEVEL に応じた条件分岐
    Windows に標準で備わっているコマンドプロンプトはシェルに比べると非力だが、UNIX 系ツールを導入すれば、そこそこ便利に使える。バッチファイルにおいて、文字列がテキストファイル中に存在するか否かで後続処理を変えるとき重宝する構文をここで紹介したい。

    コマンドプロンプト用文字列検索コマンド FINDSTR は UNIX 標準の grep/egrep の機能を劣化させたようなコマンドであり、単純な正規表現しか使えない。FINDSTR は文字列を含む行を出力するとともに、文字列が見つかったら ERRORLEVEL=0、見つからなかったら ERRORLEVEL=1 という復帰コードを返す。しかし文字列が存在しようがしまいがエラーとは言い難く、文字列の有無を知るために %ERRORLEVEL% の値を調べるのは心理的抵抗がある。たとえば RETURNCODE とすべきではないか。いずれにせよ、長くて鬱陶しい復帰コード名だ。

    FINDSTR と &&(論理積)または ||(論理和)とを組み合わせると、IF, ELSE, ELSE IF, %ERRORLEVEL% が不要となり、バッチファイル中の検索・条件分岐部分が実にすっきりする。たとえば、test.txt というテキストファイル中に
    1. 正規表現 (Regular expression) の文字列 reg_string1 が存在する、
    2. さもなければ正規表現の文字列 reg_string2 が存在する、
    3. いずれも存在しない、
    という三通りの検索結果に応じて後続処理を切り換えるには、次のようにブロック化する:

    FINDSTR /R /C:"reg_string1" test.txt >NUL 2>&1 && (
      .....
    ) || FINDSTR /R /C:"reg_string2" test.txt >NUL 2>&1 && (
      .....
    ) || (
      .....
    )

    /R は正規表現の文字列を探索するオプションである。FINDSTR は簡易正規表現しか扱えないという手抜き仕様に留まっているが、通常の目的には十分だろう。/C: は文字列中の空白が文字列同士の区切り文字とみなされないようにするオプションであり、">NUL 2>&1" はコマンドプロンプト窓が散らかるのを防ぐための呪文である。&& に続く (.....) ブロック内には検索に成功した場合 (ERRORLEVEL = 0)、|| に続く (.....) ブロック内にはヒットしなかった場合 (ERRORLEVEL = 1) の処理を記述する。ブロックの始まりと終わりを意味する "(" と ")" は必ずペアになっていなければならない。

    reg_string1 が test.txt 中に存在しないときは、単に

    FINDSTR /R /C:"reg_string1" test.txt >NUL 2>&1 || (
      .....
    )

    とするだけで済む。

    通常の文字列 "string" を探索する際には、/R の代わりに /L を指定するか、

    FIND "string" test.txt

    を使う。オプション不要なところがありがたい。

    コマンド実行後の && と || による条件分岐は広く認知されているとは言い難く、ネット情報はほとんど見かけない。頻用されてしかるべき便利な表現である。

    なお FINDSTR と FIND では原則として Shift_JIS コードのファイルを処理するためのコマンドだが、ASCII 文字の検索に限定するならば、EUC や UTF-8 コードのファイルも扱えるようだ。

    Windows 用 RIETAN-FP・VENUS 統合支援環境には、テキストファイル中に特定の文字列が含まれているか否かを調べてから後続処理を条件分岐するバッチファイルがいくつか含まれている。従来は FOR 文の実行結果を環境変数に代入し、その値を IF 文で参照するという、ややこしい手続きを踏んでいた。遅延展開せざるを得ない可能性がある環境変数の増加はできるだけ控えたい。

    たとえば RIETAN.bat 中では、あらかじめ "MEP = 1" が hoge.lst 中に存在するか否かを

    FOR /F "TOKENS=3 USEBACKQ" %%T IN (`FINDSTR /R /C:"^ *MEP = 1$" "%SAMPLE%.lst"`) DO SET MEP=%%T

    という長い FOR 文を通じて変数 MEP に代入した後、

    IF "%MEP%"=="1" (
      .....
    )

    という IF ブロックを実行するかどうかを判定していた。意味が理解しにくい上、冗長だ。同等の条件分岐を

    FINDSTR /R /C:"^ *MEP = 1$" %SAMPLE%.lst >NUL 2>&1 && (
      .....
    )

    という簡潔な命令で実行できるのは感動的ですらある。次期配付ファイルでは、FINDSTR または FIBD コマンドでストレートに場合分けするよう全面的に書き換える予定である。
    OS X・Windows 用 TeX Live のインストール
    最近、結晶構造解析の結果を文書化するための CIF・TeX 関連ユーティリティー cif2pdf, E2J, refln を実行するための Jedit X秀丸用のマクロを作成した。 いずれ公開する予定だが、cif2pdf と E2J を実行するには、TeX Live が必要不可欠である。ここで OS X と Windows 上で TeX 文書をタイプセットする環境を整えるための情報を提供しておく。

    OS X 用 TeX Live は MacTeX の Web ページから MacTeX.pkg をダウンロードし、それをダブルクリックしてインストールする。OS X El Capitan の場合 /Library/TeX/texbin にパスを通せば、TeX 関連プログラムが使えるようになる。パッケージの更新法や TeXShop の設定については、「Mac 用 TeX による英文・和文のタイプセット」を参照されたい。

    Windows 用 TeX Live は CTAN から install-tl-windows.exe をダウンロードし、右クリックしてから「管理者権限として実行」を選べば、perl.exe が裏で動いてインストールされる。TeX Live YYYY("YYYY" は "2015" のような年号を表す)の場合、 システム変数 Path に C:¥texlive¥YYYY¥bin¥win32 が追加される。TeX 関連実行形式プログラムはそのフォルダーに入っている。Windows 10の場合、パッケージは次の手順で更新する:

    1. スタートボタンを左クリックしてから「すべてのプログラム」上にカーソルを移動する。
    2. Windows システムツール」を左クリックする。
    3. コマンド プロンプトを右クリックし、「管理者として実行」を選ぶ。
    4. 「このアプリが PC に変更を加えることを許可しますか?」という問いに対し [はい] をクリックする。
    5. C:¥texlive¥2016¥bin¥win32 フォルダーに cd する。
    6. "tlmgr update --self --all" と入力して全パッケージを更新する。
    7. "exit" と入力してコマンド プロンプトを終了する。
    ORFFE による結合角と二面角の計算
    RIETAN-FP の入力ファイル hoge.ins のひな形では、幾何学的パラメーターを計算するためのプログラム ORFFE 用の結合距離計算命令 201 と結合角計算命令 002 についてごく簡単に説明している。通常は非対称単位内の原子を対象に結合距離を計算するための 201 命令だけを (2I5, 15X, I5) という書式で入力すればよい。三つの整数、すなわち

    Col. 1–5: 201
    Col. 6–7: 非対称単位内の原子の数(独立サイトの数)
    Col. 26–30: 10×最大結合距離/Å

    はいずれも右詰で入力する。

    RIETAN-FP・VENUS システムに同梱した ORFFE (Busing, Martin & Levy, 1964) では、ORFFE を二回続けて実行すると結合距離と結合角が次の2段階で計算される:

    1回目: 201 命令を実行した後、特定サイトの結合をすべて組み合わせた 002 命令が hoge.xyz の末尾に追加される。
    2回目: 201 命令を再実行した後、002 命令により結合角が計算される(RIETAN-FP_manual.pdf, Appendix D.3を見よ)。

    hoge.ins 中に 002 命令を入力せず ORFFE に任せてしまえば、時間の節約になる上、入力ミスを犯さずに済む。ただし、かなり多くの結合角が出力され、hoge.dst が膨れ上がるのを覚悟してほしい。

    ORFFE の出力ファイル hoge.dst に記されているように、ORFFE では三つの整数 A, S, C により原子の種類と位置を特定する
    An atom is designated by a pair of integer numbers in parentheses (A,1000*C+S).
    A is the number of the atom in the list of atomic parameters.
    S is the number of the symmetry information to be applied, and C defines the unit-cell translations
    hoge.dst に A, S, C の一覧表が出力される。

    ORFFE のマニュアルでは、二面角 (dihedral angle) を
    Angle between normals to planes defined by atoms 1, 2 and 3, and atoms 4, 5 and 6, respectively. If right-hand fingers are curved so that they can pass successively through atoms 1, 2 and 3 then the thumb is in direction of normal. Sign of angle will be positive if this normal makes an acute angle with vector from atoms 4, 5, and 6.
    と定義している。hoge.dst には "Dihedral angle between planes each defined by three atoms" と出力される。

    二面角は 003 命令で計算する。hoge.ins には、それら6原子の A と 1000*C+S を原子1, 2, 3, 4, 5, 6の順に5桁ずつ右詰で入力する:

    Col.   1–  5: 003
    Col.   6–10: A1
    Col. 11–15: 1000*C1+S1
    Col. 16–20: A2
    Col. 21–25: 1000*C2+S2
    Col. 26–30: A3
    Col. 31–35: 1000*C3+S3
    Col. 36–40: A4
    Col. 41–45: 1000*C4+S4
    Col. 46–50: A5
    Col. 51–55: 1000*C5+S5
    Col. 56–60: A6
    Col. 61–65: 1000*C6+S6

    VESTA の Utilities メニューで Geometrical Parameters を選んで、*.ffe 中の結合距離と結合角を結晶模型と対応させれば、6原子の A と 1000*C+S を容易に知ることができる。

    ORFFE は分散共分散行列の非対角項まで含めて幾何学的パラメーターの標準不確かさ (standard uncertainty) を計算するため、論文や報告書には ORFFE で計算した値を報告することが望ましい。上述の三命令で計算した値を報告すれば十分だろう。
    Jedit X 用 LaTeX 組版支援環境
    近年、主に Mac 用プログラム TeXShop で LaTeX 文書をタイプセットしてきた(「Mac 用 TeX による英文・和文のタイプセット 」参照)。しかし、タブで *.tex を切換えられない旧式なエディターは、複数のファイルを並行処理するのに向いていない。分割コンパイルではソースウィンドウがやたらに増えてしまう。さらに内蔵 PDF ブラウザーがやや重く、使い勝手も今一つだった。

    こうした不満が昂じた挙げ句、ついに OS X 用エディター Jedit X 上で LaTeX 文書のタイプセット用マクロ Typeset, BibTeX, MakeIndex の自作に踏み切った。いずれも AppleScript (*.scpt) と bash スクリプト (*.command) の連携により作動する。システム環境設定の「キーボード」でそれぞれ ⌘-T, ⌘-B, ⌘-I のショートカットを割り当てた。*.tex が最前面のファイルになっていると、「表示 > 構文のカラーリング」で
       ✓ LaTeX
    とチェックされる。Jedit X の操作に習熟している自分にとっては、非常に使いやすい。Typese.scpt はまず編集中のファイルのファイル名を絶対パス付きで取得し、必要なら自動保存してから、当該ファイル名を引数として Typeset.command に起動する。

    Typeset.command の中核部分を以下に示す。

    if egrep -q '^\\documentclass.*{j.+}' ${hoge}.tex ; then
       platex -kanji=sjis -file-line-error ${hoge}.tex
       dvipdfmx ${hoge}.dvi
    elif egrep -q '^\\documentclass.*{ltjsarticle}' ${hoge}.tex ; then
       luajittex --fmt=luajitlatex.fmt ${hoge}.tex
    else
       pdflatex --file-line-error ${hoge}.tex
    fi
    open -a Skim ${hoge}.pdf

    ${hoge}.tex は LaTeX テキストファイルの名前である。変数 ${hoge} は Jedit X の最前面ファイルの名前から取得する。egrep により拡張正規表現で documentclass を検索し、3種類の組版エンジン (pLaTeX, LuaJITTeX, pdfTeX) から一つを選ぶ。もともと軽量なツールである egrep を quite mode (-q) で実行するので、documentclass の判定は瞬時に終わる。私は jsarticle と ltjsarticle 以外の日本語用 documentclass は使わないので、場合分けは三つで済む。

    LuaJITTeX を使えるようにするための手続きは http://oku.edu.mie-u.ac.jp/~okumura/texwiki/?LuaJITTeX を参照していただきたい。「インストール > TeX Live の場合」に記されている。

    *.tex ⇄ PDF 相互参照機能 SyncTeX を切り捨てたことから、pLaTeX と pdfTeX による組版は高速である。とくに英文専用の pdfTeX は滅法速い。一方 LuaJITTeX は just-in-time compiler で実行するにもかかわらず鈍足な上、イタリックフォントに関する目障りな警告をコンソールに吐き出す。枯れ切った pLaTeX と比較すると、とりたててメリットを感じない。

    PDF は軽快なフリーソフトウェア Skim で閲覧することにした(最後の行)。Adobe Reader と違って現在表示中の PDF がロックされず、再組版後に同じページが表示されるという点でプレビューに優っており、LaTeX との相性がすこぶる良い。

    かねてから Jedit X 用マクロのプログラミングに習熟しているため、短時日のうちに環境を構築できた。自分にとって余計な機能をそぎ落とした簡易 LaTeX 組版機能に過ぎないものの、自作マクロに対する愛着も手伝い、とても気に入っている。その結果、長く愛用してきた TeXShop の存在意義は薄れてしまった。併用はしていくが、その出番は激減するだろう。

    これらの自作マクロは汎用性がないため公開を控えるが、物好きにも利用を希望される方には喜んで差し上げる。

    (C) 2016 ブログ JUGEM Some Rights Reserved.