指标和上标的宏定义空间问题

指标和上标的宏定义空间问题

我定义了一个FZ用于定义数学符号的命令:

\newcommand{\FZ}[1]{\textcolor{blue}{\ensuremath{#1}}\xspace}

我想CV先定义一个符号,然后创建一些具有不同索引的变体CV_D,例如CV_{D,\,\mathrm{Gr}}......

为了保持一致,我尝试将其定义为“逐步”,但随后我遇到了间距问题。请参阅最小示例:

  • 我怎样才能更D接近CV“直接”排版的黑色版本?
  • 我怎样才能让“Gr”与索引“D”处于相同的高度?

我的截图

最小示例:

\documentclass{scrbook}
\usepackage{color, xspace}

\newcommand{\FZ}[1]{\textcolor{blue}{\ensuremath{#1}}\xspace}

\newcommand{\CV}{\FZ{CV}}
\newcommand{\CvD}{\FZ{\CV{}^{*}_{D}}}   
\newcommand{\CvDGr}{\FZ{\CvD_{,\,\mathrm{Gr}}}}

\begin{document}

\CV

\CvD

wish: $CV_D$

\CvDGr

wish: $CV^{*}_{D,\,\mathrm{Gr}}$

\end{document}

答案1

在数学模式下{ }生成一个新的数学对象(据我所知它实际上叫法不同,但我不记得正确的名字了),它会影响下标和上标的位置。 {{...}_{D}}_{\,Gr}与 完全不同{...}_{D\,Gr}

将它放在颜色宏中也会产生一些影响。请注意,您\FZ多次使用 int \CvDGr。我只会展平宏定义。如果您真的想要“一致性”,那么恕我直言,您需要一些不包含\FZ并以参数形式接受更多材料的宏:

\documentclass{scrbook}
\usepackage{color, xspace}

\newcommand{\FZ}[1]{\textcolor{blue}{\ensuremath{#1}}\xspace}

\newcommand{\cv}{CV}
\newcommand{\CV}{\FZ{\cv}}
\newcommand{\cvd}[1]{\cv^{*}_{D#1}}
\newcommand{\CvD}{\FZ{\cvd{}}}
\newcommand{\CvDGr}{\FZ{\cvd{,\,\mathrm{Gr}}}}

\begin{document}

\CV

\CvD

wish: $CV_D$

\CvDGr

wish: $CV^{*}_{D,\,\mathrm{Gr}}$

\end{document}

结果

答案2

我的立场是绝不用于\ensuremath产生数学符号的命令,这也可以解决\xspace问题。

\newcommand{\FZ}{\textcolor{blue}}
\newcommand{\CV}{\FZ{CV}}
\newcommand{\CvD}{\FZ{CV^{*}_{D}}}
\newcommand{\CvDGr}{\FZ{CV^{*}_{D,\,\mathrm{Gr}}}}

您的“D”之所以\CvD离得很远,是因为您插入了空的子公式{};“Gr”不在同一个下标中,所以它被视为一个空公式的下标,因此它有点凸起,因为“D”被上标的存在向下推了。

现在 $\CV$、$\CvD$ 和 $\CvDGr$ 都可以正常工作。如果你真的想要\ensuremath,把它放在颜色命令外面:

\newcommand{\FZ}[1]{\ensuremath{\textcolor{blue}{#1}}\xspace}

事实上,\textcolor{blue}{x}在数学模式下也能起作用,产生一个普通符号;因为你的对象是普通符号,所以没有问题。

相关内容