ifthenを用いた場合に発生する謎の水平方向の空白について質問です。
otfパッケージを用いずに丸数字(①)を4桁まで出力したいと思い,条件分岐を可能にするifthenを用いて以下のコードを作ってみました。
(コンパイラ:uplatex,機種:MacBook Air)
%documentclass-------------------------------------------------------------------------------
\documentclass[uplatex,dvipdfmx,fleqn]{jsarticle}
%preamble-------------------------------------------------------------------------------------
\usepackage{graphicx,ifthen}
%ifthenのせいかどうかを判断するためのmmaruの定義
\newcommand{\mmaru}[1]{\textcircled{\scalebox{0.9}[0.85]{\raisebox{-0.1em}[0.15em][0em]{#1}}}}
%1桁とそれ以外の丸数字の定義
\newcommand{\subsubmaru}[1]
{
\ifnum#1<10 \textcircled{\scalebox{0.9}[0.85]{\raisebox{-0.1em}[0.15em][0em]{#1}}}
\else
\textcircled{\scalebox{0.7}[0.67]{\raisebox{0em}[0.15em][0em]{#1}}}
\fi
}
%1桁・2桁とそれ以外の丸数字の定義
\newcommand{\submaru}[1]
{
\ifnum#1<100 \subsubmaru{#1}
\else
\textcircled{\scalebox{0.47}[0.7]{\raisebox{-0.01em}[0.1em][0em]{#1}}}
\fi
}
%1桁・2桁・3桁とそれ以外の丸数字の定義
\newcommand{\maru}[1]
{
\ifnum#1<1000 \submaru{#1}
\else
\textcircled{\scalebox{0.33}[0.74]{\textgt{#1}}}
\fi
}
%document-------------------------------------------------------------------------------------
\begin{document}
\mmaru{3}\mmaru{9}\maru{1}\maru{99}\maru{100}\maru{999}\maru{1000}
\end{document}
急ぎというのもありますが,手元の参考書やwebサイトに複数の条件での場合分けの方法が見当たらなかったため,わざわざ何度も場合わけをするという汚いソースになってしまったことをご容赦ください。
問題の空白についてですが,丸数字の間に不可解なスペースができてしまっていました。しかもこれは丸数字の桁数によって長さが異なっていました(桁数が多いほど空白が小さい)。
なので,これはscaleboxもしくはraiseboxでの設定を変えれば解決するのではと思いました。
ところが,ためしに条件分岐を用いていない\mmaruを作ってみたところ,先に挙げた問題は発生しませんでした。となればifthenに問題があるのではと考えたのですが,ifthenを用いたことによって発生する空白について触れている本や記事は見当たらず,また,桁数によってスペースが変わるというのも単にifthenのせいというのでは説明がつかないのではと思いました。
長い間試行錯誤してみましたのですがどうしても埒が開かず,知人に尋ねてもわからないとのことでしたので,皆様のお力を貸していただければという考えに至りました。
どなたか解決策をご教授いただければ幸いです。
長文失礼しました。