我正在尝试为不同类型的同态定义一个新命令。该命令是:
\newcommand{\Hom}[2][]{%
\operatorname{Hom}_{\textnormal{#1}}\left({#2}\right)%
}
在没有给出可选参数的情况下,此命令在内联和显示模式下的输出是正确的。例如,这是$\Hom{A,B}$
和的输出$$\Hom{A,B}$$
然后可以有一个额外的下标来指定我指的是哪种类型的同态。例如,$\Hom[gr]{G,H}$
或$$\Hom[gr]{G,H}$$
两者都有“正确”的输出(我仍然对运算符和第一个括号之间的间距有疑问)
最后,如果我必须在下标中包含一些内联数学运算,LaTex 会在显示模式下给出相反的错误标记。例如,如果我尝试编译$\Hom[$k$-alg]{A,B}$
,则看不到任何错误,但在显示模式下执行相同的命令 ,$$\Hom[$k$-alg]{A,B}$$
则会出现错误和无错误。让我解释一下:我收到输出 (有些人可能会争论我为什么在这里徘徊),但同时出现错误警报,如下图所示,但“日志和输出文件”中没有错误消息。
输出
错误:
“$$ 之后出现意外的 $”
“在 $ 处发现未关闭的 $$”
这个问题有解决办法吗?还是我只能接受错误标签,忽略它?如果我能做些什么,我愿意尝试每一个建议。
注1:我知道关于使用$$...$$
和的争论\[...\]
,但我愿意在一些已经使用$...$
和编写的 LaTeX 文档中使用这个新命令$$...$$
,并且我想保持一致性。
笔记2:抱歉,图片尺寸有点问题,我是新手,不太了解所有设置。
答案1
这些不是错误,只是来自 Overleaf 的错误建议,有时无法遵循嵌套的数学公式。
如果您明确地将其写为可选参数,它可能不会犹豫[\textnormal{$k$-alg}]
,但无法猜测参数已传递给\textnormal
。
因此,请忽略这些消息。
关于您的代码还有其他重要事项:
\left
且\right
应被省略;- 下标缺失时会产生不需要的空格;
$$
应该绝不在 LaTeX 环境中使用document
。
\documentclass[twocolumn]{article}
\usepackage{amsmath}
\NewDocumentCommand{\Hom}{o}{%
\operatorname{Hom}\IfValueT{#1}{_{\textnormal{#1}}}%
}
\newcommand{\lorenzoHom}[2][]{%
\operatorname{Hom}_{\textnormal{#1}}\left({#2}\right)%
}
\begin{document}
\subsubsection*{My definition}
\begin{gather*}
\Hom(A,B) \\
\Hom[$k$-alg](A,B)
\end{gather*}
\subsubsection*{Your definition}
\begin{gather*}
\lorenzoHom{A,B} \\
\lorenzoHom[$k$-alg]{A,B}
\end{gather*}
\end{document}
{}
我认为仅仅A,B
为了获得圆括号而使用大括号没有任何好处:(A,B)
直接输入更自然。
你能看到不需要的空格吗?