我想定义以下 LaTeX 命令
\newcommand{\cost}[1][]{
\ifthenelse{\isempty{#1}}
{c_N}
{c_N((#1))}
}
其中,参数#1
在输出中括在括号 ( ) 中。不幸的是,LaTeX 输出会隐藏括号。如何让 LaTeX 不隐藏参数周围的括号?
答案1
答案2
答案3
当我做
\documentclass{article}
\usepackage{xifthen}
\newcommand{\cost}[1][]{\ifthenelse{\isempty{#1}}{c_N}{c_N((#1))}}
\begin{document}
$\cost$ %no output
$\cost[]$ % no output
$\cost[x]$
$\cost[\empty]$
\end{document}
,然后我得到:
\cost
如您所见,如果#1
不为空但包含一些标记,则会出现两层括号。
可能不是关于抑制括号而是关于在下标中使用括号?
\documentclass{article}
\newcommand{\cost}[1][]{c_{N\ifthenelse{\isempty{#1}}{}{(#1)}}}%
\usepackage{xifthen}
\begin{document}
$\cost$ %no output
$\cost[]$ % no output
$\cost[x]$
$\cost[\{x\}]$
$\cost[\empty]$
\end{document}
可能不是关于括号而是关于花括号?
(我推测这是因为在收集宏参数的过程中,围绕整个可选参数/整个(]
-)分隔参数的一层花括号被剥离,即$\cost[x]$
产生与 相同的结果$\cost[{x}]$
。
除此之外,第 1 类(开始组)/第 2 类(结束组)的花括号会影响 TeX 运行时事物的处理/分组/范围,但不会产生在生成的 PDF 文件中可见的符号/字符。)
如果是这样,那么您可以执行\{
/\}
或\left\{
/ \right\}
。
\documentclass{article}
\newcommand{\cost}[1][]{c_{N\ifthenelse{\isempty{#1}}{}{\{(#1)\}}}}%
\usepackage{xifthen}
\begin{document}
$\cost$ %no output
$\cost[]$ % no output
$\cost[x]$
$\cost[\empty]$
\end{document}