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

名前: ZR
日時: 2007-03-19 16:27:11
IPアドレス: 221.187.36.*

>>47483 >いずれにしろ、もう少し、学名の「仕様」をはっきりさせないと >TeX マクロとしては作れないでしょう。 >※ 例えば、var. と f. と subsp. の出現順序とか‥‥ えーと、実際にはもっと単純で、Perl 正規表現で書くと \w+ \w+( subsp\. \w+)?( var\. \w+)?( f\. \w+)? となります(のはず)。語数が決まっていることに注意してください。 下のもので十分だと思います。これは var. と f. だけですが、 subsp. を追加するのも簡単です。 \documentclass{article} \makeatletter \def\sname#1{{\@sname#1 _}} % (*) \def\@sname#1 #2 {\emph{#1\ #2}\@ifnextchar v{\@sname@v}{\@sname@nv}} \def\@sname@v var. #1 {\ var.~\emph{#1}\@sname@nv} \def\@sname@nv{\@ifnextchar f{\@sname@f}{\@sname@nf}} \def\@sname@f f. #1 {\ f.~\emph{#1}\@sname@nf} \def\@sname@nf_{} \makeatother \begin{document} \begin{itemize} \item \sname{Aaa bbb} \item \sname{Aaa bbb var. xxx} \item \sname{Aaa bbb f. yyy} \item \sname{Aaa bbb var. xxx f. yyy} % 下の 4 つはエラー %\item \sname{Aaa bbb zzz} %\item \sname{Aaa bbb vvv} %\item \sname{Aaabbb} %\item \sname{Aaa bbb var.} \end{itemize} \end{document} (*) 余分に {} で囲っているのは _ の先まで読みに行くのを防止する (エラーで落とす)ため。

この書き込みへの返事:

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