我的 .cls 文件中有此代码块 -
\newcommand{\ExperienceEntry}[5]{
\noindent\makebox[\width][l]{#1} \hfill
\makebox[\width][l]{#2} \\
\noindent\makebox[\width][l]{#3} \hfill \\
\indent
\makebox[\width][l]{\textit{#4}} \vspace{5pt}\\
\noindent
\parbox[t][\height][c]{\textwidth}{\small{#5}}
\vspace{-1pt}
}
如何使第三个参数 ( #3
) 成为可选参数?我所说的可选参数是指,如果我将其留空{}
,则不希望文档中出现空白。
例如,会发生以下情况:
这是 .tex 代码 -
这是生成的文档 -
我发现了一些关于根据提供的参数而产生不同行为的相关文档 -
带有和不带有可选参数的不同命令定义
新命令的可选参数?
但我不确定在我的情况下如何使用它。
https://stackoverflow.com/questions/1812214/latex-optional-arguments似乎最相关,但这里必须定义一个默认行为,而我希望默认行为是忽略该参数。
答案1
这不是 LaTeX 术语中的“可选参数”,它们使用[]
not {}
。但是,您可以通过多种方式测试参数是否为空,例如
\if\relax\detokenize{#2}\relax\else
\mbox{#2}\\
\fi
如果#2
为空,则最终测试\if\relax\relax
哪个为真,否则测试将为假,因此#2
将被使用。(注意,我简化了\makebox
并\mbox
删除了之前的虚假空格\\
)
看起来您#3
不是想测试#2
……
笔记
\noindent\makebox[\width][l]{#3} \hfill \\
你不需要\hfill
之前\\
,你之前也不应该有空格\hfill
,正如前面提到的,你可以简单地使用\mbox
,所以你可以用以下方式替换这一行
\if\relax\detokenize{#3}\relax\else
\mbox{#3}\\
\fi