条件分岐(if文)に関する質問

名前: 永田善久
日時: 2002-02-28 18:09:25
IPアドレス: 133.100.243.*

条件分岐(if文)に関する質問です いつもドイツ語の話題ばかりで恐縮なのですが、かつて本田さんが作成して くださった「変種ウムラウト出力マクロ」 (378 参照) を TeX の「条件分岐」と組み合わせることで、「通常のドイツ語用ソース ファイルに手を入れることなく変種ウムラウトが出力される」ようにしたい と考えています。 具体的には、ドイツ語用ソースでは "a と入力されていれば a の上に二個点々 のウムラウトが出力されるのですが、この状態に「条件分岐による工夫」を施す ことで、"a というソースでも a の上に「小添字 e」が来る変種ウムラウト出力 となるようにしたいのです。 そこで、以下のようなif文を作ってみました。(ソースファイルを添付します) この条件分岐で実現しようとしていることは次の5点です。 1. "s ではいわゆるエスツェットではなく sz が出力されるようにする 2. 大文字の "A "O "U に関してはウムラウトではなく通常の e が送られる Ae Oe Ue となるようにする (どうやらこれが当時の正書法) 3. 小文字の "a "o "u ではそれぞれ「小添字 e」ウムラウトとなるようにする 4. 上記以外に " の記号が使われた場合は本来の " マクロが実現されるように する (下の例では "| というドイツ語における「リガチャ抑制マクロ」を使って あります) 5. 予期せぬ副作用がない さて、私には「ちゃんと動いている」ように見えるのですが、「生兵法は大疵の基」 ともいいます。出来ましたら TeXnician の皆様のチェックを戴きたいのですが、 宜しくお願いいたします。 ========================================= \documentclass[a4paper]{article} \usepackage[T1]{fontenc} \usepackage{txfonts,german} \makeatletter \newcommand{\uml}[1]{% <--------ここから \ifvmode\leavevmode\fi% \setbox0=\hbox{#1}\vbox{\hbox to \wd0{% \setlength\@tempdima{\f@size pt}% \setlength\@tempdima{.5\@tempdima}% \fontsize{\@tempdima}{\f@baselineskip}\selectfont% \@tempdimb=\the\fontdimen\@ne\font \@tempdimb\f@size\@tempdimb \@tempdimb2\@tempdimb \hfil\hskip\@tempdimb e\hfil}% \nointerlineskip\vskip.15ex \hbox{\hfil#1\hfil}}}% <---------ここまでが本田さんによるマクロ \makeatother \def"#1{% <--------------- ここから \if#1s{sz}% \else \if#1A{Ae}% \else \if#1O{Oe}% \else \if#1U{Ue}% \else \if#1a{\uml#1}% \else \if#1o{\uml#1}% \else \if#1u{\uml#1}% \else\relax\fi\fi\fi\fi\fi\fi\fi}% <-----------ここまでが永田によるif文 \begin{document} "A Ae, "O Oe, "U Ue, "a, "o, "u, "s sz "Arger Aerger, "Ode Oede, "Uber Ueber K"afer, K"onig, "uber, da"s dasz Auf"|lage vs. Auflage \end{document}

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます)