年別アーカイブ: 2013年

ループ処理でメモ用の罫線を作る

近、テキストを作っていて「右ページはメモページ」という体裁を必要とすることがあった。
要は、\dotfill\\を繰り返せばよいのだけれど、そういうページが出てくるたびにこれを20回も繰り返すのはイヤなので、マクロ化したくなった。ページの大きさに合わせて行間や行数も変更できたらいいな…ということは《繰り返し処理》が必要となる。

でもこれまでに作ったことのあるマクロはいずれも単発のマクロばかりで、《繰り返し処理》は初めての挑戦…参考になるページを探したら、「TeXのループ構文」という詳しい記事が。TeXの深い話(いつも難しすぎてヒョエ~と感嘆するだけ…汗)を紹介してくれるZ.R.さんのマクロツイーターの記事。

そこにあった九九を記述するマクロを参考に、以下のようにマクロを組んでみた。デフォルトの行間を3zwに指定しておきたかったので、\defではなく\newcommandを使用したけれど、例を見たら改変はしやすかった。先達はあらまほしきことなりだね。

ところが、最初を《メモ》と記した行にしたら、2行目以降のドットと揃わなくなった…orz。
ここをきちんと揃えるには、単純な\dotfillではなくて\leadersを使うとよいようだ。\leadersを用いるとドットを引いた後で文字が出力されるそうで、そうなれば版面全体でドットの縦の位置が揃う。以下は、5ポイントの幅の中央にピリオドのあるボックスを端から並べる、という罫線。(参照:LaTeX2e標準コマンド・ポケットリファレンスp.436)

この\mydotsを用いて、「メモページ」を作ると、以下のようになった。行間の変更が局所的になるように定義部分を\bgroup…\egroupで囲っている。

これでめでたく「メモページ」の出来上がり!書式は「\memopage[行間(単位zw)]{行数}」というもので、オプションは数字のみ、行間のデフォルトは「3zw」に自動設定。行数の調整もできるからページの一部をメモにする、という体裁も大丈夫だし、うまくまとめられてホッとした。
wpid-memotest-2013-09-13-16-22.png

ceo.styの記号だけ一部使う

験数学の第一人者の安田亨先生作のceo.styは、大学入試数学(端的には月刊誌『大学への数学』)を記述するのに便利なマクロ集&フォントであり、一英語講師としても便利に使わせていただいているものなのだが、もともとamsmath(amssymb)やmathabxと被るところがあったり、emathと衝突する部分があったり、jsarticle.clsを少し改変したクラスファイルぢゃないと体裁がややよろしくなかったりするなど、全面的に採用するには自分の環境ではやや都合が悪い。(emathとの衝突は、である程度回避できるものではあるが、そもそもemathも一部のパッケージのみを使っているのでemath全体はいわばoverkillなんだよね…。)

自分がceo.styを用いたいと思った一番の理由は一部の記号を使いたかったからなので、ならばその記号部分だけを自分用のマクロ集に登録しようと思った次第。使いたかったのは、以下の記号群…。

【絵】ceo.sty添付のマニュアルより
wpid-PastedGraphic-2013-08-14-08-47.png

これらはceo.styをダウンロードすると含まれているkigou.styの中で定義されているので、該当箇所を自分の普段のマクロ集に写すことにする。なお、以下のディレクトリ構成はMacOS 10.8上のMacTex 2013(TeXLive 2013)に基づいたもの。

まずは、ceo.styのインストール。ceosty.zipをダウンロードして展開すると、けっこうたくさんのファイルやフォルダが含まれている。その中の4つのフォルダを、TEXMFLOCAL(/usr/local/texlive/texmf-local)またはTEXMFHOME(~/Library/texmf)にインストールすることになる。

  1. 「into tfm」この中のceoフォルダを /texmf-local/fonts/tfm/ 以下に移す。
  2. 「into type1」この中のceoフォルダを /texmf-local/fonts/type1/ 以下に移す。
  3. 「into map」この中のceoフォルダを /texmf-local/fonts/map/dvips/ 以下に移す。
  4. 「into latex」この中のceoフォルダを /texmf-local/tex/latex/ 以下に移す。

mktexlsrを実行してから、mapファイルをupdmapを使って登録する。

ceoの各ファイルをTEXMFHOMEに入れた場合は、updmap-sysではなくupdmapを実行する。

次に、kigou.styの中から、使いたい記号の定義を自分専用のマクロ集にコピーする。定義は2段階になっているので、個々の記号のマクロ(38行目以降)だけでなく、それらの記号マクロが使っているフォント指定マクロ(3行目~37行目)も必要に応じてコピーする。

とまぁ、こんな具合に。
これでめでたく、ceo.sty全体を読み込まずにその一部の記号のみを使う、ということができるようになった。

機種依存文字の修正[カスタム関数]

だんMacを使っているわけだが、Windowsや携帯などから「機種依存文字」を含むメールが送られてきて、それをFileMakerに入力しなくてはいけないことがある。仕事柄、丸数字とかローマ数字とかをつい使ってしまう人もいるわけで…。
これまではテキストエディタを使っていちいち手修正していたのだけれど、関数(計算式)で一気に処理することにして、ついでにカスタム関数にすれば使い回しできるか、と思いついた。
ってか、これまで何でそうしなかったのだろう…。今ごろになってやっとカスタム関数やらLetやらを使うことを覚えた自分…orz。
とりあえず、自分に必要なものの範囲で作成。


書式:CleanText (tx)
Substitute ( tx ; ["㈰" ; "(1)"] ; ["㈪" ; "(2)"] ; ["㈫" ; "(3)"] ; ["㈬" ; "(4)"] ; ["㈭" ; "(5)"] ; ["㈮" ; "(6)"] ; ["㈯" ; "(7)"] ; ["㉀" ; "(8)"] ; ["㈷" ; "(9)"] ; ["㉂" ; "(10)"] ;
["㉃" ; "(11)"] ; ["㈹" ; "(12)"] ; ["㈺" ; "(13)"] ; ["㈱" ; "(14)"] ; ["㈾" ; "(15)"] ; ["㈴" ; "(16)"] ; ["㈲" ; "(17)"] ; ["㈻" ; "(18)"] ; ["㈶" ; "(19)"] ; ["㈳" ; "(20)"] ;
["㈵" ; “I”] ; ["㈼" ; “II”] ; ["㈽" ; “III”] ; ["㈿" ; “IV”] ; ["㈸" ; “V”] ; )

ついでに言えば、Get ( アクティブフィールド内容 ) って、こういうときめちゃめちゃ便利だな。