在内联数学表达式中换行后重复某些符号

在内联数学表达式中换行后重复某些符号

我使用 LaTeX 来输入我的大学数学笔记。在其中,我经常发现自己面临内联数学表达式中的换行符。在这种情况下,我通常想在换行符之前将符号复制两遍,将一个副本放在行尾,将另一个副本放在下一行的开头。不幸的是,TeX 不会这样做。到目前为止,我让它手动执行此操作(例如$d=$ $=\dim M$$f:M\to$ $\to\mathbb{R}$甚至$x\mapsto$ \linebreak $\mapsto(x,f(x))$,因为有时 TeX 会在第二次复制后换行)。检查文档中所有此类换行符非常无聊,因此我想知道是否有办法告诉 TeX 自动执行此操作。理想的做法是使用宏\doubleatbreaks,其语法\doubleatbreaks{<sign>}确保<sign>在内联数学的换行符处将 复制两遍。例如,在换行符处\doubleatbreaks{=}=s 复制两遍,在换行符处\doubleatbreaks{\times}将 复制\times两遍,等等。有办法做到这一点吗?

编辑

正如 @egreg 所说,rmathbr这是方法。只有一件事:当我在换行符处有一个减号时,我通常会在新行上加一个加号,因为 -+=- 和 --=+。rmathbr将 - 翻倍。我怎样才能得到 - (换行符) +?

答案1

完成此操作的几个步骤:

  1. 加拿大运输安全局
  2. 寻找包裹rmathbr
  3. 下载它
  4. 找到下载的文件;
  5. 打开rmathbr.ins;
  6. 排版(即编译);
  7. 这会产生一个.sty;找到它并将其放置在 TeX 可以找到它的目录中;
  8. 添加\usepackage{rmathbr}到您的文档的序言中。

这会导致很多符号重复。打开.sty现在也会打开.pdf文档的。该包似乎存在一些已知问题,文档说应该加载在其他包裹之后

如果有人像我一样想用加号分隔减号(即$a-$ $+b$在中间加一个换行符),因为 -+=- 和 --=+,我侵入了该包的代码并生成了这个:

\makeatletter
\begingroup
  \catcode`\-\active
  \ifnum\mathcode`\-<32768
    \xdef-{\noexpand\xbrokenbin{\mathchar\number\mathcode`\-}}
  \else
    \gdef-{\xbrokenbin{\mathchar8704}}
  \fi
\endgroup
\DeclareRobustCommand{\xbrokenbin}[1]{\rmathbr@xbrokenbin{#1}}
\def\rmathbr@xbrokenbin#1%
{
  \relax
  \def\rmathbr@arg{#1}
  \def\rmathbr@this{\rmathbr@xbrokenbin}
  \def\rmathbr@output{\rmathbr@@xbrokenbin}
  \futurelet\rmathbr@let@token\rmathbr@brokenop%
}
\def\rmathbr@@xbrokenbin#1%
{
  \ifnum\lastpenalty=\relpenalty
    \mathbin{#1}
  \else
    \mathbin{#1}
    \ifx$\rmathbr@let@token
    \else
      \rmathbr@selector{+}
    \fi
  \fi
  \rmathbr@setbrokens
  \penalty\binoppenalty %
}
\def\rmathbr@selector#1%
{
  \mathchoice
    {\discretionary{}{\hbox{$\m@th\displaystyle#1$}}{}}
    {\discretionary{}{\hbox{$\m@th\textstyle#1$}}{}}
    {\discretionary{}{\hbox{$\m@th\scriptstyle#1$}}{}}
    {\discretionary{}{\hbox{$\m@th\scriptscriptstyle#1$}}{}}%
}
\makeatother

我创建了一个包含上述代码的文件handleminus.tex,并得到了以下非常简单的 MWE:

\documentclass[a4paper]{report}
\usepackage{amsmath,rmathbr}
\input handleminus.tex

\begin{document}
Foobar Foobar Baz Baz Tom Dick Harry Tizio Caio Sempronio sorrata $d=\dim M$. wojgaoperjgojefgiwejafoiwjofipjaweoifjwaeoifjowipjfowiepjf pqppp $a\times b$ qoifjoqiwjfoiwqjfoiqwjfoiqwjfoiqwjfoiwqjfo qpogkpoqwkgpoqwkpowq pqi $a-b$
\end{document}

编译为:

在此处输入图片描述

当然,请记住,在\input加载包之后,否则上面的代码将被包的代码覆盖,并且您将重复返回减号。

感谢 egreg 指出该包。

稍微努力一下,肯定可以制作一个版本,\xbrokenbin它接受两个参数并创建一个命令,该命令打印第一个参数,换行,然后给出第二个参数,即\xbrokenbin{-}{+}给出上述代码产生的结果。但是,我不需要这样的扭曲,所以我不会花时间去做。另外,我不鼓励这样的扭曲:像\subseteq这样重复\cdot会很奇怪。

相关内容