TeX総合スレッド\section{第6節}

このエントリーをはてなブックマークに追加
444132人目の素数さん
ある1つの文字列を引数にして、それに対応する文字列を出力するには
どうしたらよいのでしょう?

Basicのselect case みたいに

a: ア
i: イ
u: ウ
e: エ
nasi: ナシ
: (可能性のあるものは全て列挙しておく)
else: ■

これを\kataというパッケージにしておいて
\kata{u} とするとウが出るように。
445132人目の素数さん:2008/01/23(水) 21:34:48
>>444
\ifx でも多用したマクロを作れば?
446132人目の素数さん:2008/01/23(水) 21:41:49
既存のマクロの定義などを調べてみれば、
そういう場合に使える手を見つけることもできるだろう。

\documentclass{jarticle}
\begin{document}
\makeatletter
\def\kana#1{\@ifundefined{@kana@#1}{■}{\@nameuse{@kana@#1}}}
\def\@kana@a{あ}\def\@kana@i{い}
\def\@kana@u{う}\def\@kana@e{え}
\def\@kana@o{お}\def\@kana@ka{か}
%%% 以下同様
\makeatother
「\kana{a}」と「\kana{zzz}」

\makeatletter
\def\kana#1{%
\protected@edef\@kana@tempa{#1}%
\def\@kana@tempb{■}%
\@tfor\@kana@tempx:={{a}{あ}}{{i}{い}}{{u}{う}}%
{{e}{え}}{{o}{お}}{{ka}{か}}%%% 中略
\do{%
\edef\@kana@tempc{\expandafter\@firstoftwo\@kana@tempx}%
\ifx\@kana@tempa\@kana@tempc
\edef\@kana@tempb{\expandafter\@secondoftwo\@kana@tempx}%
\@break@tfor
\fi}%
\@kana@tempb}
\makeatother
「\kana{u}」と「\kana{zzz}」
\end{document}