newcommandでの定義の部分的な変更はできますか?

newcommandでの定義の部分的な変更はできますか?

- 佐々木 新一 の投稿
返信数: 4
\newcommand{\bangou}[1]{%
\ifcase #1\or (1)\or (2)\or (3)\or (4)\or (5)\or (6)\or
(7)\or (8)\or (9)\or (10)\or (11)\or (12)\or (13)\or
(14)\or (15)\or (16)\or (17)\or (18)\or (19)\or (20)\or
(21)\or (22)\or (23)\or (24)\or (25)\or (26)\fi}

この定義をたとえば,\bangou{3} で(3)ですが,\bangou{3}で(X)となるように,部分的に変更する記述のしかたはありませんか?
ご存知でしたら教えてください.(_ _;)
佐々木 新一 への返信

Re: newcommandでの定義の部分的な変更はできますか?

- 飯島 徹 の投稿
普通の人は「(3)」を「(X)」に変えたいと思ったらとりあえずその通りにしてみるのではないでしょうか?

\ifcase \fi がどのような命令か Google などで検索してみるとよくわかるでしょう
飯島 徹 への返信

Re: newcommandでの定義の部分的な変更はできますか?

- 佐々木 新一 の投稿
ありがとうございます.問題番号を部分的に変えられたら便利なので,そのような方法を模索していました ^^;;
佐々木 新一 への返信

Re: newcommandでの定義の部分的な変更はできますか?

- ワトソン の投稿
e-TeX 拡張が有効なエンジン限定にはなりますが,etoolbox パッケージの
\patchcmd がまさにその用途のための命令だと思います.

詳しいことは texdoc etoolbox で調べてみてください.

%%% サンプル 開始 %%%
\documentclass{article}

\usepackage{etoolbox}

\newcommand{\bangou}[1]{%
\ifcase #1\or (1)\or (2)\or (3)\or (4)\or (5)\or (6)\or
(7)\or (8)\or (9)\or (10)\or (11)\or (12)\or (13)\or
(14)\or (15)\or (16)\or (17)\or (18)\or (19)\or (20)\or
(21)\or (22)\or (23)\or (24)\or (25)\or (26)\fi}

\patchcmd{\bangou}{(3)}{(X)}{\message{success}}{\message{failure}}

\begin{document}

\bangou{1}%=>(1)
\bangou{2}%=>(2)
\bangou{3}%=>(X)
\bangou{4}%=>(4)
\bangou{5}%=>(5)

\end{document}
%%% サンプル おわり %%%