我目前正在学习 LaTeX,主要用于编写带有公式的文本。我已经在其他 SE 网站(例如物理或数学)上积累了一些使用 LaTeX 编写的经验。现在我开始学习在专用软件中编写 LaTeX(我使用 TeXstudio,但这可能不相关)。
我注意到,当使用带有 $$...$$ 的方程式时,无法使用 \tag 命令。例如,以下代码:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
$$a=b\tag{1}$$
\end{document}
输出“a=b”而不是“a=b (1)”。我还收到错误代码:
包 amsmath 错误:\tag 此处不允许。$$a=b\tag
经过更多的实验后,我发现使用 \tag 命令的唯一(?)方法是使用方程工作区:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{equation}
a=b\tag{1}
\end{equation}
\end{document}
输出正确的结果
使用方程工作区,您会得到一个默认的数字标签,但是这样,您可以将其更改为您想要的任何值。
我有两个问题:
为什么使用带有 $$...$$ 或 $...$ 的方程式时是否无法添加标签?
有什么解决方法吗?使用方程式环境没什么问题,但有时我觉得“$”方法更舒服
答案1
如果你跑
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\show\tag
\end{document}
你会看到的
> \tag=macro:
->\invalid@tag {\string \tag \space not allowed here}.
l.4 \show\tag
该宏\tag
由 定义amsmath
,其“正常”定义是产生错误。只有进入amsmath
数学环境之一时,宏才会被重新定义以执行其应执行的操作。例如, 、和\tag
的扩展涉及宏,其定义包含以下行\begin{equation}
\begin{equation*}
\[
\mathdisplay
\let\tag\tag@in@display
类似地align
,,,,flalign
和gather
得出multline
\let\tag\tag@in@align
由于这些\let
分配发生在一个组中,因此的重新定义\tag
仅限于当前环境,并且在退出时\tag
恢复其正常定义(产生错误)。
这解释了您的“为什么”问题:当您使用$$
上述任何一项时\let
,都不会执行,并\tag
产生错误。
有解决方法吗?可能有。您可以按照定义$$$ $$$
对齐。
不要。永远不要。请阅读为什么\[ … \]
最好$$ … $$?
然后忘记前面的段落。
如果你想\tag
为单行方程式提供手册,请使用\[...\]
。它涉及的笔画数与 相同$$...$$
。不可否认,德语键盘布局并不容易;这就是为什么即使我住在德国,我也有一个 qwerty 键盘:-)