![基于宏观论证的条件间距](https://linux22.com/image/472985/%E5%9F%BA%E4%BA%8E%E5%AE%8F%E8%A7%82%E8%AE%BA%E8%AF%81%E7%9A%84%E6%9D%A1%E4%BB%B6%E9%97%B4%E8%B7%9D.png)
考虑下面的宏:
\newcommand{\interpretation}[1]{\left[ #1 \right]_{\mathcal{N}}}
这给出了参数的以下输出a
:
到目前为止,一切都很好。
现在,假设我传递一个包含各种内容的长参数,例如[(\phi \land \psi)]_A \lor [(\neg \chi \rightarrow \zeta)]_C
:
(请注意,这一切都不具有任何数学意义 - 仅作为示例的随机符号。)
很难看出哪组括号与哪组括号匹配,等等。我希望宏在参数看起来较宽时有条件地在最外层括号周围添加空格。例如,像这样:
如果我无条件地添加空格,它会对所有参数都这样做,甚至是我们a
之前的简单参数:
我想避免这种情况。宏是否有办法“呈现”其参数并根据其宽度有条件地添加空格?我对任何包等都持开放态度。
答案1
您可以根据口味调整 0.05 的系数
\documentclass{article}
\newcommand{\interpretation}[1]{%
% avoid automatic left-right https://tex.stackexchange.com/a/173740/1090
\left[%
\sbox0{$#1$}%
\hspace{.05\wd0}{#1}\hspace{.05\wd0}%
\right]_{\mathcal{N}}}
\begin{document}
$\interpretation{a}$
$\interpretation{a+b}$
$\interpretation{a+b+c+d}$
$\interpretation{a+b+c+d+xyz}$
\end{document}