Emacs:Aquamacs 更新后,Auto-Fill-Mode 的 Alt-q 在 LaTeX 中的数学定界符处换行
Emacs: After Aquamacs update, Auto-Fill-Mode's Alt-q breaks lines at maths delimiter in LaTeX
我更新 Aquamacs 后,在编辑 LaTeX 文档时使用 Alt-q
(在自动填充次要模式下)填充段落会导致每行在第一次出现 LaTeX 数学结束分隔符时被断开, \)
。 (好吧,几乎!请参阅下面的示例以了解一个例外。)
版本信息:Aquamacs 3.2 GNU Emacs 24.4.51.2
.
问题
如何告诉 Aquamacs/Emacs/Auto-Fill 模式 而不是 在它看到的第一个 \)
处换行,而是实际填写段落像更新前一样?
重现此行为的步骤
Help -> Diagnose and report bug -> Start Aquamacs without customizations
获得 "pristine" Aquamacs window。
- 打开名为
testemacs.tex
的文件并粘贴 Lorem Ipsum 文本,两次以形成两个段落。
- 在 second 段落的随机位置添加由 LaTeX 分隔符
\(
和 \)
分隔的小数学表达式。保持第一段不变。
- 键入
Alt-x auto-fill-mode
以启用自动填充模式。
- 转到每个段落并键入
Alt-q
以调用 fill-paragraph
函数。
- 观察差异!请参阅下面的屏幕截图:
如您所见,除了最后一行,fill-paragraph
在它看到的第一个结束分隔符 \)
处换行。这使得段落看起来非常难看,并且破坏了填充段落的全部目的。我怎样才能摆脱这种行为?
模式
运行模式请见下方截图:
这是 AUCTeX 的最新变化。您可以自定义变量 LaTeX-fill-break-at-separators
。默认情况下是
(\\( \\) \\[ \\])
根据文档,这意味着如果整个表达式在填充时不适合行,则这些分隔符之前或之后的行将被断开。但是,行为并不完全如此,如您所见,它会在结束定界符 \)
和 \]
之后无条件地换行。
从此列表中删除内联数学开关 \(
和 \)
可恢复旧行为。我还发现只需从此列表中删除 \)
即可获得可接受的结果,请参见下面的示例 2。在自定义界面中取消勾选 "Closing Inline Math Switches"
下面是不同设置的具体演示。
默认值为LaTeX-fill-break-at-separators
,相当于
(custom-set-variables
'(LaTeX-fill-break-at-separators (quote (\\( \\) \\[ \\]))))
在每个 \)
:
后给出一个换行符
Let \( \gamma\colon \BbbR \times [0,T) \to \BbbR^2 \)
be a family of regular curves solving~\eqref{eq:c-flow}, with each
curve \( \gamma^t \)
of period~\( \Psi \)
and with \( \gamma^0 \)
strictly convex. Let \( \kappa_0(t) \)
be the minimum value of \( \kappa \)
on \( \gamma^t \).
Note that \( \kappa_0(t) \)
is achieved at some point \( (\psi,t) \),
so in particular \( \kappa_0(0) > 0 \).
没有内联数学关闭
(custom-set-variables
'(LaTeX-fill-break-at-separators (quote (\\( \\[ \\]))))
将数学组保持在一行上,但允许在它们之后输入文本:
Let \( \gamma\colon \BbbR \times [0,T) \to \BbbR^2 \) be a family of
regular curves solving~\eqref{eq:c-flow}, with each curve
\( \gamma^t \) of period~\( \Psi \) and with \( \gamma^0 \) strictly
convex. Let \( \kappa_0(t) \) be the minimum value of \( \kappa \) on
\( \gamma^t \). Note that \( \kappa_0(t) \) is achieved at some point
\( (\psi,t) \), so in particular \( \kappa_0(0) > 0 \).
没有任何内联数学定界符
(custom-set-variables
'(LaTeX-fill-break-at-separators (quote (\\[ \\]))))
数学组可以按行拆分:
Let \( \gamma\colon \BbbR \times [0,T) \to \BbbR^2 \) be a family of
regular curves solving~\eqref{eq:c-flow}, with each curve \( \gamma^t
\) of period~\( \Psi \) and with \( \gamma^0 \) strictly convex. Let
\( \kappa_0(t) \) be the minimum value of \( \kappa \) on \( \gamma^t
\). Note that \( \kappa_0(t) \) is achieved at some point \( (\psi,t)
\), so in particular \( \kappa_0(0) > 0 \).
我还会注意到 Aquamacs 已损坏:它使用来自 fill-adapt
的函数覆盖了默认值 fill-paragraph
(在 GNU Emacs 中不带参数),该函数只带一个参数。
这基本上破坏了所有使用 fill-paragraph
的包。
我更新 Aquamacs 后,在编辑 LaTeX 文档时使用 Alt-q
(在自动填充次要模式下)填充段落会导致每行在第一次出现 LaTeX 数学结束分隔符时被断开, \)
。 (好吧,几乎!请参阅下面的示例以了解一个例外。)
版本信息:Aquamacs 3.2 GNU Emacs 24.4.51.2
.
问题
如何告诉 Aquamacs/Emacs/Auto-Fill 模式 而不是 在它看到的第一个 \)
处换行,而是实际填写段落像更新前一样?
重现此行为的步骤
Help -> Diagnose and report bug -> Start Aquamacs without customizations
获得 "pristine" Aquamacs window。- 打开名为
testemacs.tex
的文件并粘贴 Lorem Ipsum 文本,两次以形成两个段落。 - 在 second 段落的随机位置添加由 LaTeX 分隔符
\(
和\)
分隔的小数学表达式。保持第一段不变。 - 键入
Alt-x auto-fill-mode
以启用自动填充模式。 - 转到每个段落并键入
Alt-q
以调用fill-paragraph
函数。 - 观察差异!请参阅下面的屏幕截图:
如您所见,除了最后一行,fill-paragraph
在它看到的第一个结束分隔符 \)
处换行。这使得段落看起来非常难看,并且破坏了填充段落的全部目的。我怎样才能摆脱这种行为?
模式
运行模式请见下方截图:
这是 AUCTeX 的最新变化。您可以自定义变量 LaTeX-fill-break-at-separators
。默认情况下是
(\\( \\) \\[ \\])
根据文档,这意味着如果整个表达式在填充时不适合行,则这些分隔符之前或之后的行将被断开。但是,行为并不完全如此,如您所见,它会在结束定界符 \)
和 \]
之后无条件地换行。
从此列表中删除内联数学开关 \(
和 \)
可恢复旧行为。我还发现只需从此列表中删除 \)
即可获得可接受的结果,请参见下面的示例 2。在自定义界面中取消勾选 "Closing Inline Math Switches"
下面是不同设置的具体演示。
默认值为
LaTeX-fill-break-at-separators
,相当于(custom-set-variables '(LaTeX-fill-break-at-separators (quote (\\( \\) \\[ \\]))))
在每个 \)
:
Let \( \gamma\colon \BbbR \times [0,T) \to \BbbR^2 \)
be a family of regular curves solving~\eqref{eq:c-flow}, with each
curve \( \gamma^t \)
of period~\( \Psi \)
and with \( \gamma^0 \)
strictly convex. Let \( \kappa_0(t) \)
be the minimum value of \( \kappa \)
on \( \gamma^t \).
Note that \( \kappa_0(t) \)
is achieved at some point \( (\psi,t) \),
so in particular \( \kappa_0(0) > 0 \).
没有内联数学关闭
(custom-set-variables '(LaTeX-fill-break-at-separators (quote (\\( \\[ \\]))))
将数学组保持在一行上,但允许在它们之后输入文本:
Let \( \gamma\colon \BbbR \times [0,T) \to \BbbR^2 \) be a family of
regular curves solving~\eqref{eq:c-flow}, with each curve
\( \gamma^t \) of period~\( \Psi \) and with \( \gamma^0 \) strictly
convex. Let \( \kappa_0(t) \) be the minimum value of \( \kappa \) on
\( \gamma^t \). Note that \( \kappa_0(t) \) is achieved at some point
\( (\psi,t) \), so in particular \( \kappa_0(0) > 0 \).
没有任何内联数学定界符
(custom-set-variables '(LaTeX-fill-break-at-separators (quote (\\[ \\]))))
数学组可以按行拆分:
Let \( \gamma\colon \BbbR \times [0,T) \to \BbbR^2 \) be a family of
regular curves solving~\eqref{eq:c-flow}, with each curve \( \gamma^t
\) of period~\( \Psi \) and with \( \gamma^0 \) strictly convex. Let
\( \kappa_0(t) \) be the minimum value of \( \kappa \) on \( \gamma^t
\). Note that \( \kappa_0(t) \) is achieved at some point \( (\psi,t)
\), so in particular \( \kappa_0(0) > 0 \).
我还会注意到 Aquamacs 已损坏:它使用来自 fill-adapt
的函数覆盖了默认值 fill-paragraph
(在 GNU Emacs 中不带参数),该函数只带一个参数。
这基本上破坏了所有使用 fill-paragraph
的包。