删除 equals 中的空格,使其充当变量

删除 equals 中的空格,使其充当变量

我正在尝试编写两个 hom-函子之间的自然同构(伴随)。第一个参数的间距-按预期被删除,但第二个参数=具有二元运算符的间距,即使它的右侧只有一个括号。即以下内容:

i:\mathcal{D}(F-,=)\Rightarrow \mathcal{C}(-,G=)

看起来像这样:

坏等于

G我怎样才能删除之前的间距,使其像之前=的间距一样?F-

答案1

要使某个字符在数学模式下表现为普通字符,只需将其放在花括号中即可{...}。然后它变为\mathord并获得适当的间距。

示例输出

\documentclass{article}

\begin{document}

\begin{displaymath}
  i\colon\mathcal{D}(F-,=)\Rightarrow \mathcal{C}(-,G{=})
\end{displaymath}

\newcommand{\eq}{{=}}
\begin{displaymath}
  i\colon\mathcal{D}(F-,\eq)\Rightarrow \mathcal{C}(-,G\eq)
\end{displaymath}

\end{document}

您可能想要定义一个简写,例如,\eq正如我\newcommand{\eq}{{=}}上面所定义的那样。

对于这种语义情况,@egreg 建议使用更好的宏,例如:

\documentclass{article}
\usepackage{amsmath}

\newcommand{\blank}[1][1]{%
  \ifcase#1\relax\or{-}\or{=}\or{\equiv}\fi
}

\begin{document}

\[
i\colon\mathcal{D}(F\blank,\blank[2])\Rightarrow \mathcal{C}(\blank,G\blank[2])
\]

\end{document}

在此处输入图片描述

@VF1 指向四线平等得到一个四行符号。但是,这很快就会变得难以阅读,所以我建议使用类似于<n>上面的破折号。这里有两个宏\nblank\xblank可以做到这一点。第二个\xblank是可以扩展以适合上面的标签的版本。

示例输出

\documentclass{article}

\usepackage{amsmath}

\newcommand{\blank}[1][1]{%
  \ifcase#1\relax\or{-}\or{=}\or{\equiv}\or\nblank{#1}\fi
  }

\newcommand{\shortstrut}{\vrule width 0pt height 0.8ex}
\newcommand{\nblank}[1]{\overset{\langle #1\rangle}{\shortstrut\smash[t]{-}}}

\makeatletter
\newcommand{\xblank}[1]{\setbox\z@%
  \hbox{\m@th$\cleaders\hbox{$\mkern-2mu\relbar\mkern-2mu$}\hfill
    \displaystyle$}%
  \def\@tempa{\mkern1mu{\langle #1\rangle}\mkern1mu}%
  \setbox\tw@\hbox{\m@th$\scriptstyle\@tempa$}%
  {\mathop{\shortstrut\hbox to \wd\tw@{\unhbox\z@}}\limits^{\@tempa}}}
\makeatother

\begin{document}

\begin{displaymath}
  i\colon\mathcal{D}(F\blank,\blank[2])\Rightarrow
  \mathcal{C}(\blank,G\blank[2])
\end{displaymath}

\begin{displaymath}
  r(\blank,\nblank{2},\dots,\nblank{n}) = (\nblank{n},\dots,\nblank{2},\blank)
\end{displaymath}

\begin{displaymath}
  s(\blank,\dots,\xblank{1001637}) = \xblank{37}
\end{displaymath}

\end{document}

相关内容