\documentclass{article}
\title{}
\author{}
\date{}
\begin{document}
\newcommand{\mybold}[2]{\ifnum #1=1 \textbf{#2} \else{#2} \fi}
\mybold{1}{This should be bold}
\mybold{0}{This should NOT be bold}
\end{document}
在此代码中,命令mybold
接受数字和文本。如果数字是,则1
文本被强调,如果不是,则不强调。它按预期工作。
\documentclass{article}
\title{}
\author{}
\date{}
\begin{document}
\newcommand{\mybold}[2]{\ifnum #1=1 \textbf\fi{#2}}
\mybold{1}{This should be bold}
\mybold{0}{This should NOT be bold}
\end{document}
#2
我尝试通过在if 条件后面添加代码来缩短第一个代码。但是,我得到了too many }'s
错误。如何让第二个代码起作用?
答案1
做这个。
\documentclass{article}
\title{}
\author{}
\date{}
\begin{document}
\newcommand{\mybold}[2]{\ifnum #1=1 \expandafter\textbf\fi{#2}}
\mybold{1}{This should be bold}
\mybold{0}{This should NOT be bold}
\end{document}
解释:TeX\if...
命令的工作方式有点不直观,因此将\textbf
“看到” \fi
。请参阅\@firstoftwo 和 \@secondoftwo 起什么作用?。
如果你想了解 TeX 宏编程的细节,可以参考以下资源我应该从哪里开始 LaTeX 编程?。但通常编写“更简单”的代码更好。
答案2
虽然user202729 的回答更切合编程问题,为了解决印刷问题,您可能只想使用字体开关而不是命令\textbf
:
\documentclass{article}
\title{}
\author{}
\date{}
\begin{document}
\newcommand{\mybold}[2]{{\ifnum #1=1 \bfseries\fi #2}}% NOTICE the difference in grouping!
\mybold{1}{This should be bold}
\mybold{0}{This should NOT be bold}
\end{document}
但请注意,这两种方法并不完全相同;可能存在如果需要斜体校正则有差异在开关上。