元の問題は e-TeX 拡張を使うと「抜け道」ができるので、汎用的な場合に変えてみた。
LaTeX(ToL)で、以下の要件を満たす命令
\makecounterprinterを実装せよ。
\makecounterprinter\制御綴A\制御綴Bは\制御綴Aを以下のようなカウンタ値出力命令として定義する。\制御綴B{<整数>}は引数の整数を「ある特定の形式」(例えばナベアツ)で出力する命令であると仮定する。ただし、引数は 10 進表記で与えなければならない。\制御綴A{<LaTeXカウンタ名>}は当該のカウンタの現在の値を\制御綴Bの定める形式で出力する。\制御綴Bは脆弱(fragile)であるかも知れない。
この問題の実装を用いて元の問題を実現すると次のようになる。ただし、\makecounterprinter の正しい実装が makecounterprinter.sty パッケージに記してあるものとする。
\documentclass[a4paper]{article}
\usepackage{makecounterprinter}
\makeatletter %!!!!!!!!!!!!!!!!!!!!!!!!!
%% 平凡な \nabeazz の定義
\newcommand\nabeazz[1]{%
\begingroup
\@tempcnta#1\relax \@tempcntb\@tempcnta
\divide\@tempcntb3 \multiply\@tempcntb3
\ifnum\@tempcnta=\@tempcntb \xx@ahofont
\else \expandafter\xx@in@nabeazz@a\the\@tempcnta3\relax
\fi
\the\@tempcnta
\endgroup
}
\def\xx@in@nabeazz@a#13#2\relax{%
\ifx!#2!\else \xx@ahofont \fi
}
\def\xx@ahofont{\usefont{OT1}{cmfr}{m}{it}}
\makeatother %!!!!!!!!!!!!!!!!!!!!!!!!!
% \nabeazz から \NabeAzzLike を作る
\makecounterprinter\NabeAzzLike\nabeazz
\begin{document}
\renewcommand{\theenumi}{\NabeAzzLike{enumi}}
Essential packages:
\begin{enumerate}
\item graphicx; \label{gra}
\item hyperref; \label{hyp}
\item iamjatex. \label{iam}
\end{enumerate}
Items \ref{gra}, \ref{hyp}, and \ref{iam}.
\end{document}もう一つの例として、tatesuji パッケージ(藤田眞作氏作)の \tatesuji 命令を用いてカウンタ値を出力してみる。
\documentclass[a4paper,landscape]{tarticle} \usepackage{makecounterprinter} \usepackage{tatesuji} \usepackage{bxbase}\recordpapersize \makecounterprinter\withtatesuji\tatesuji \begin{document} \renewcommand{\theenumi}{\withtatesuji{enumi}} \renewcommand{\labelenumi}{\theenumi 、} とっても参考になるもの。 \begin{enumerate} \item 「美文書」 \item 「独習」 \item 「マクロツイーター」 \label{are} \end{enumerate} 特に\ref{are}はお奨め……なわけない。 \end{document}
