派遣登録の際に出された課題にあったのがドロップキャップス。
(完全に忘れてた。。。)
家に帰ってから調べると
文字組版辞典の中に
QuarkXPressでは「スタイル」メニューから「段落書式」を選び、ウインドウ上の「ドロップキャップス」を選択するだけで設定できます。
とあった。その時は級数を倍にしてアンカーボックス処理をして逃げたのだが、ルーチンワークばかりやっていたためかスキル低下は目を覆うばかりだ。
いき♂さんの
【正規表現】最短一致より
正規表現は“
最左最長一致検索”が基本です。
でも、拡張正規表現(いまどきそんな言い方するのかな?)の中には最短一致させるための表現方法が用意されています。
下の例文の中で、「君が好きではない。」と「君が好きだ。」の2箇所にマッチさせる正規表現の一例を挙げてみます。
俺は君が好きではない。おおお。だが彼は君が好きだ。
下の3つの正規表現のうち、一番上の表現だとマッチする文字列が最も広範囲になり、思惑に反して例文のうち行頭の「俺は」以外の文字列にマッチしてしまいます。
それ以外のふたつは同じで、上の例文においては思惑通り2箇所にマッチします。
君が好き.*。 君が好き[^。]*。 君が好き.*?。最初の「君が好き.*。」は最後の好きだ。までマッチしてしまう。
最短マッチは3番目の「君が好き.*?。」で今まで処理していた(忘れかけているが)。
ただこれはいき♂さんに言わせると少々古い処理系らしい。
2番目を読み解くと「君が好き」で始まり、2番目以降は句点(。)以外の文字で、最後は句点で終わる文にマッチする。解りにくいが
「2番目以降は句点(。)以外の文字」というところがポイント。句点が最初に出た時点でマッチを意味する。
で、最近DTPerの間では正規表現についてblogが流行っているらしいww
正規表現で数字の桁数を表す#1桁の数字だけを検索
¥d{1}
はい、だめ~。なんでダメかっていうと、今ヒットしてる所から再検索すると次に続く数字にもヒットしちゃう。
#1桁の数字だけを検索
(?<![¥.,])¥b¥d¥b(?![¥.,])
うん、これで多分普通のテキストなら大丈夫。
で、読み解きます。
dは数字、
{n}は{ }の前をn回繰り返す。この{ }が正規表現とPerlで意が違うので混乱するのです。
¥bは単語境界を意味する。[¥.,]は¥ . ,のどれか一文字。
(?<![¥.,])と
(?![¥.,])はちと捜したぞ(^^;A
(?<!pattern)
括弧内にある正規表現が先行していないことを要求する表明です。マッチの結果の文字列には影響しません。例えば、(?<=foo)barという正規表現はfooが先行しないbarにマッチしますが、マッチした文字列全体を表す $&(Perlの場合)には fooは含まれません。後読み(もしくは戻り読み (lookbehind))は固定長の文字列に対してのみ働きます(処理系による。可変長の文字列を許可する処理系もあります)。
(?!regexp)
こちらは括弧内にある正規表現が続かないことを要求する表明です。