\Opt
是一个由 5 个元素组成的向量
但有些可以留空。
基于这个很好的答案我学习了如何测试一个参数是否为空。
但正如你在我的 MWE 中看到的,我在处理空格方面遇到了困难。我手动添加了一个额外的空格,\Opt{EMTN }{SPX }{jun }{ATM }{C}
但毫无疑问,当参数为空时,有一个自动答案可以避免双倍空格,并更和谐地显示元素。
\documentclass{article}
\usepackage{xcolor}
\newcommand{\Opt}[5]{%
{\color{blue!80}%
\if\relax\detokenize{#1}\relax\else\texttt{#1}\fi
} %I get a legit double space here if no %
{\color{orange!80!black}
\if\relax\detokenize{#2}\relax\else\texttt{#2}\fi
\if\relax\detokenize{#3}\relax\else\texttt{#3}\fi
\if\relax\detokenize{#4}\relax\else\texttt{#4}\fi
\if\relax\detokenize{#5}\relax\else\texttt{#5}\fi
}
}
\begin{document}
\Opt{EMTN }{SPX }{}{}{C}
\Opt{EMTN }{SPX }{jun }{ATM }{C}
\Opt{EMTN}{SPX}{}{}{C}
\Opt{FUND}{AAPL}{jun}{OTM}{C}
\Opt{FUND }{AAPL }{jun }{OTM }{C}
\Opt{}{SPX }{}{}{Put}
\end{document}
答案1
您可以在最后一个参数后添加空格\textt{#? }
并执行:\unskip
\def\Opt#1#2#3#4#5{%
{\color{blue!80}%
\if\relax\detokenize{#1}\relax\else\texttt{#1 }\fi
}% I get a legit double space here if no %
{\color{orange!80!black}%
\if\relax\detokenize{#2}\relax\else\texttt{#2 }\fi
\if\relax\detokenize{#3}\relax\else\texttt{#3 }\fi
\if\relax\detokenize{#4}\relax\else\texttt{#4 }\fi
\if\relax\detokenize{#5}\relax\else\texttt{#5 }\fi
}%
\unskip
}
测试:
\Opt{EMTN}{SPX}{}{}{C}
\Opt{EMTN}{SPX}{jun}{ATM}{C}
\Opt{EMTN}{SPX}{}{}{C}
\Opt {EMTN} {SPX} {jun} {ATM} {C}