在某些印刷惯例中,当出现换行符时,习惯上会重复二进制数学运算符号。例如,如果a + b = c
在 处换行+
,则结果将a +
在第一行和第二行。逻辑连接词 ( ) 和二进制关系符号 ( ) 以及多个箭头 ( )+ b = c
也会发生重复。\Longrightarrow
=
xrightarrow
二进制减号 是个例外–
。例如,在第一行a – b = c
会变成,在第二行会变成 。a +
– b = c
问题:有没有办法在全球范围内实现这样的突破但仅适用于内联数学以自动的方式?
如果您选择回答这个问题,这里有一个 MWE,它可能会经过测试,可以正常工作。
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[LGR,T1]{fontenc}
\usepackage[english]{babel}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{mathtools}
\usepackage{titlesec}
\usepackage[pdftex]{graphicx}
\usepackage{parskip}
\usepackage[a4paper]{geometry}
%Solution code might go here%
\begin{document}
$a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a$
$b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b$
$c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c==c=c=c=c=c=c=c=c=c=c=c=c=c$
$d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d$
$e\xrightarrow{n\to\infty} e\xrightarrow{n\to\infty} e\xrightarrow{n\to\infty} e\xrightarrow{n\to\infty} e\xrightarrow{n\to\infty} e\xrightarrow{n\to\infty} e\xrightarrow{n\to\infty} e\xrightarrow{n\to\infty} e\xrightarrow{n\to\infty} e\xrightarrow{n\to\infty} e\xrightarrow{n\to\infty} e\xrightarrow{n\to\infty} e$
\end{document}
注意:$$
-s 是故意使用的。另外:如果这很重要,我会使用 pdfLaTeX。(加载的包并不重要,但确实可以作为某种选择。如果提出的解决方案不会干扰常用包,那就太理想了)。
A上一个问题=
只考虑了对和的执行\leq
。有没有更通用的方法,而不必分别指定每个符号?
这也有相关,但不那么相关。
答案1
作为建议经过埃格尔,包
rmathbr
是此处的重点。它为 OP 中提出的大多数问题提供了选项。请务必使用最新版本(rmathbr
在撰写本文时,这是2020 年 12 月)。
- 各种错误已修复,例如
\coloneqq
现在可以工作。- 我通常在大多数包之后加载它,但可能的除外
bookmark
,geometry
以及类似的。- 也可以看看:文档。已知问题:with
breqn
包。尽管加载 commath 可以使其对称,但Withcommath
仍会使其不对称。:=
但\coloneqq
不受影响(工作正常)。
对于许多类型的中断,只需加载包就足够了。答案的其余部分专门用于回答 OP 中需要一些额外代码的特定愿望(第 1、2 和 3 部分)。
- 新的关系/操作不是有可变参数
为了获得可破坏的n to infty
箭头,请\goesto
在序言中定义如下:
\newcommand{\goesto}{\xrightarrow{n\to\infty}}
\SetBreakableRel{\goesto}
- 新的关系/操作做包含可变参数
为了获得可破坏的a to b
箭头(带有a
和b
变量),请\goestoarg
在序言中定义如下:
\DeclareRobustCommand{\goestoarg}[2]{\brokenrel{\xrightarrow{#1\to#2}}}
(当然,您可以概括该语法以满足您的需要)。
- 获得A对称可破碎减
–
为了获得a – b
break up asa –
和+ b
,在序言中添加以下代码:
\makeatletter
\def\minus@char{\mathchar8704}
\def\plus@char{\mathchar8235}
\def\rmathbr@selector#1{%
\def\x@char{#1}%
\ifx\x@char\minus@char\def\x@char{\plus@char}\fi%
\mathchoice
{\discretionary{}{\hbox{$\m@th\displaystyle\x@char$}}{}}
{\discretionary{}{\hbox{$\m@th\textstyle\x@char$}}{}}
{\discretionary{}{\hbox{$\m@th\scriptstyle\x@char$}}{}}
{\discretionary{}{\hbox{$\m@th\scriptscriptstyle\x@char$}}{}}%
}
\makeatother
- 之前的代码来自Github。 看要求:添加不对称破坏减号的选项。具体而言,请参阅回答经过德里亚博夫。根据评论的注意事项:打破的其他版本
+-
更难做到;解决方案可能适用于或不适用于包unicode-math
(它适用于XeLaTeX
和LuaLaTeX
,因此对来说没有问题pdflatex
)。
以下是 MWE 的输出(见下图):
MWE 代码:
\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[LGR,T1]{fontenc}
\usepackage[english]{babel}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{mathtools}
\usepackage{titlesec}
\usepackage[pdftex]{graphicx}
\usepackage{parskip}
\usepackage{rmathbr} %<- here is package rmathbr
\usepackage[a4paper]{geometry}
%% part 1 code (no variables) %%
\newcommand{\goesto}{\xrightarrow{n\to\infty}}
\SetBreakableRel{\goesto}
%%-------------%%
%%part 2 code (with variables) %% (from Willie Wong)
\DeclareRobustCommand{\goestoarg}[2]{\brokenrel{\xrightarrow{#1\to#2}}}
%%-------------%%
%%part 3 code (breaking – as –+)%% (from dryabov)
\makeatletter
\def\minus@char{\mathchar8704}
\def\plus@char{\mathchar8235}
\def\rmathbr@selector#1{%
\def\x@char{#1}%
\ifx\x@char\minus@char\def\x@char{\plus@char}\fi%
\mathchoice
{\discretionary{}{\hbox{$\m@th\displaystyle\x@char$}}{}}
{\discretionary{}{\hbox{$\m@th\textstyle\x@char$}}{}}
{\discretionary{}{\hbox{$\m@th\scriptstyle\x@char$}}{}}
{\discretionary{}{\hbox{$\m@th\scriptscriptstyle\x@char$}}{}}%
}
\makeatother
%%-------------%%
\begin{document}
$a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a$
$b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b-b$
$c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c=c$
$d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d\Longrightarrow d$
$e\goesto e\goesto e\goesto e\goesto e\goesto e\goesto e\goesto e\goesto e\goesto e\goesto e\goesto e\goesto e$
aasdf asdf asd fasdf asdf aasdf asdf asd fasdf asdf asdf aasdf asd asdas $eeeeeeeee\goestoarg{a}{b} cccccccccc$ aasdf asdf asd fasdf asdf asdf aasdf asdf asd fasdf asdf asdf
$a \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b \coloneqq b$
\end{document}
最后说明:也可以禁用打破关系/运算符的重复,你不希望这样被打破。我认为语法是\UnsetBrokenCmd{<your operator/relation name>}
(恢复到没有的行为rmathbr
)。