在数学模式中保护负间距

在数学模式中保护负间距

我正在使用\!创建负间距并在数学模式下在符号上放置破折号。(在这里,我通过定义\met放置破折号的命令来表示缺失的横向能量E_T,请参阅下面的代码。)

在大多数情况下(使用 时beamer)这种方法效果很好,但在文章类中,当行中填充了额外的空间时,这种方法可能会失败。然后破折号不再处于正确的位置。

有没有更好的方法来放置破折号?

最小示例:

\documentclass{article}

\usepackage{xspace}
\usepackage{multicol}

\begin{document}

  % \met has the negative spacing
  \newcommand{\met}{\ensuremath{\not\!\!E_T}\xspace}

  % fails here
  \begin{multicols}{2}
    A model for \met trigger rates.
    Lorem ipsum dolor sit amet, consectetuer
    adipiscing elit. Ut purus elit, vestibulum ut, placerat ac,
    adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu
    libero, nonummy eget, consectetuer id, vulputate a, magna. Donec
    vehicula augue eu neque. 
  \end{multicols}

  % works here
  A model for \met trigger rate prediction.
  Lorem ipsum dolor sit amet, consectetuer
  adipiscing elit. Ut purus elit, vestibulum ut, placerat ac,
  adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu
  libero, nonummy eget, consectetuer id, vulputate a, magna.


\end{document}

PS:请随意添加适当的标签。

答案1

这是一个更好的完整的最小示例,其中有一种方法可以使您的符号更加健壮:

\documentclass{article}

\begin{document}

\newcommand{\met}{\ensuremath{{\not\mathrel{E}}_T}}

\newcommand{\foo}[1]{\hbox spread #1{A model for \met trigger rates.}}

\foo{0pt}
\foo{2pt}
\foo{4pt}
\foo{6pt}
\foo{8pt}

\end{document}

额外的括号将“关系”非 E 恢复为普通符号。

编辑:我可能要补充一点关于其工作原理的说明。\not定义为\mathchar"3236,其中是3类(关系)。如果将符号$\not$本身排版在一个框中并测量它,则会看到它的宽度为零。但实际上,符号在右侧的标称零宽度字符框外面画了一条几乎垂直的线。所以它最终会与下一个符号重叠。现在关系通常被(可拉伸的)空间包围,这是这里问题的根源。但是并排的两个关系符号没有中间空间,因此您可以创建复合关系,例如:=。因此,将 E 变成关系符号会关闭它和之间的麻烦空间\not。额外的一组括号使结果再次变得普通。

答案2

取消该包似乎是实现此目的的正确工具。

\documentclass[11pt,a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{multicol}
\usepackage{cancel}

\begin{document}
  \begin{multicols}{2}
    A model for $\cancel{E_T}$ trigger rates.
    Lorem ipsum dolor sit amet, consectetuer
    adipiscing elit. Ut purus elit, vestibulum ut, placerat ac,
    adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu
    libero, nonummy eget, consectetuer id, vulputate a, magna. Donec
    vehicula augue eu neque.
  \end{multicols}
\end{document}

答案3

我怀疑 multicols 以某种方式改变了负薄空间的宽度。这是一个更巧妙的版本,只是重叠。

  \newcommand{\met}{\ensuremath{\hbox to 0pt{$\not$}E_T}\xspace}

相关内容