通常情况下,当你在数学模式之后立即输入文本时,它会打印出来没有缩进(这是理想的外观),但是在接下来的 MWE 中,会出现一个小的缩进
\documentclass{article}
\usepackage{mathtext}
\usepackage[ukrainian]{babel}
\usepackage{amsmath,amsfonts}
\usepackage{mathabx}
\usepackage{euscript}
\usepackage{hyperref}
\begin{document}
$\EuScript{F}$
$$
123
$$
test
\\
test
test
\end{document}
请注意,基本上注释掉任何现有包都可以解决问题,并删除$\EuScript{F}$
数学模式公式前面的123
公式。
什么原因导致数学模式后出现这种意外的缩进?
如何在不删除任何已加载的包且不在每个数学模式块后添加\noindent
或注释符号( )的情况下修复该问题?%
答案1
David 指出,问题出在localmathalphabets
处理上。它将代码放在显示之后(via \aftergroup
),这样就无法$$
看到后面的任何空格,也无法将其删除。因此它们会显示出来。
如果使用 LaTeX 数学显示(如\[...\]
、\begin{equation}
等),情况就不是如此。
回答备注中的评论:并非所有 TeX 原语都受到 LaTeX 的官方支持,即使在内部代码中使用它们(但要特别小心,例如,在必要时在 LaTeX 代码中$$...$$
遵循构造)。\ignorespaces
$$...$$
不受官方支持 LaTeX- 它可能会导致问题,举一个简单的例子,应用
fleqn
类选项 - 我们确实知道人们会使用它们,因此 LaTeX 会尽力使原始
$$...$$
作品尽可能地 - 但建议是:不要使用它
在 LaTeX 中的问题得到解决之前,你可以使用以下快速解决方法
\setcounter{localmathalphabets}{0}
(或不$$...$$
按建议使用)。为了得到最终解决方案,我在我们的错误跟踪器中打开了一个问题:https://github.com/latex3/latex2e/issues/886
答案2
空格不是缩进,而是行尾之后的单词空格$$
。通常,空格会被忽略,$$
但 aftergrouped 标记会干扰。
这是为避免数学组用尽而添加的新代码的问题。恢复数学字体的 aftergrouped 标记阻止了通常隐式的\igorespaces
after $$
。我们可能会在格式中修复此问题,但请注意这不是错误:$$
从未在 LaTeX 中支持语法,并且任何 LaTeX 显示数学形式(例如\[...\]
或)\begin{equation}..\end{equation}
都不会显示此行为。
此答案的早期版本通过在内部 LaTeX 代码中添加某个点来修复所示示例\igorespaces
。这并不完全正确,因为它需要以显示数学为条件,这样您就不会在 中丢失空间$x$ and...
。使该条件成为条件有点棘手:需要在其他地方进行更改,因此这里不显示。
如果您选择继续使用,$$
则可以通过声明禁用新的数学字母功能来避免此问题:
\setcounter{localmathalphabets}{0}
直到底层问题得到解决,但请注意,如果您的文档使用超过 16 种数学字体(并且必须已经使用至少 14 种才能触发此问题),您将(与早期的 LaTeX 版本一样)收到错误。
您的文档使用如此多数学字体的原因之一是它们mathtext
与 hyperref 的交互效果不佳。您的示例(如果添加\showoutput
调试信息)显示,数学是使用PU
仅适用于 PDF 书签的编码设置的。
.....\PU/pdf/m/n/10 1
.....\PU/pdf/m/n/10 2
.....\PU/pdf/m/n/10 3
您或许应该向软件包维护人员报告问题mathtext
,并且不要将其与 hyperref 结合使用,除非问题已得到解决。