Re: 生物の学名を表現するマクロ

名前: 北見 けん
日時: 2007-03-20 12:25:11
IPアドレス: 211.128.71.*

>>47491 47485によると命名者の部分には決まった書式がないようなので、 自動判別は無理で結局人間の手で適切なマークアップをする他にないだろうということです。 そうならばトニイさんの方法で書体変更の手間を減らすのが実用的だろうと思いました。 ですから、\emph で囲むのでもよいでしょうし、命名者であることを表すマークアップを定義するのでもよいと思います。 でも命名者が頻繁に付くのなら確かに面倒ですね。 >>47483 > オプション引数にしないなら、学名そのものをパターン・マッチングで > 分解していくことになると思いますが、昔、某所で私がおねだりした > パターンとよく似ているように思えるものの、それに応えて作っていただいた > マクロの原理(引数のパターン・マッチングの取り方)が理解しきれていないので > 応用が利かないという情けない状況です。 みなもさんのあれですよね。 このテクニック、私はものにできたようです。 47484にあった > Perl 正規表現で書くと > > \w+ \w+( subsp\. \w+)?( var\. \w+)?( f\. \w+)? という前提ですが。 \documentclass{article} \begin{document} \def\name#1{\checkf#1 f. f.\name\par} \def\checkf#1 f. #2f.#3\name{\checksubsp#1 subsp. subsp.\name\rmit{f.}{#2}} \def\checksubsp#1 subsp. #2subsp.#3\name{\checkvar#1 var. var.\name\rmit{subsp.}{#2}} \def\checkvar#1 var. #2var.#3\name{\textit{#1}\/ \rmit{var.}{#2}} \def\rmit#1#2{\def\temp{#2}\ifx\temp\empty\else\textrm{#1\@} \textit{#2}\/\fi} \name{XXX YYY var. AAA subsp. BBB f. CCC} \name{XXX YYY var. AAA subsp. BBB} \name{XXX YYY var. AAA f. CCC} \name{XXX YYY var. AAA} \name{XXX YYY subsp. BBB f. CCC} \name{XXX YYY subsp. BBB} \name{XXX YYY f. CCC} \name{XXX YYY} \end{document}

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます。適宜改行を入れてください)