如何将 LyX 中的长公式分成两行(或更多行)?我知道如何在一个“数学框”中写出几行方程,但我正在寻找一种解决方案,即使在括号中间也能断行。
我正在使用 LyX 1.6.4,目前,当公式太大时,它什么也不做(它只是不打印它的最后一部分,即“超出”页面)。
这在 LyX 中可行吗?
是的,但你必须手动完成。
查看:
Lyx 有一个“插入 -> 数学 -> AMS 多线环境”控件,或者您可以通过使用插入 Latex 控件直接输入 Latex 来使用上面推荐的解决方案。
Michael Downes 用这个包做了一些非凡的 Tex 编码,但它对于一般用途来说不够健壮 - 例如,它与 Amsmath 大多不兼容,以难以理解的方式中断,并且在公式中产生了一些明显不合理的换行符。
显示公式中的自动换行被列为Tex 中最重要的开放研究问题之一。
如果您在 LyX“LaTeX 序言”(加上以下代码)中包含 \usepackage{breqn},那么标准的“方程式”环境(显示公式)将按照您的意愿自动中断。
% Add support for automatic equation breaking
\gdef\wrap@breqn@environ#1#2{
\expandafter\let\csname breqn@oldbegin@#1\expandafter\endcsname\csname #1\endcsname
\expandafter\let\csname breqn@oldend@#1\expandafter\endcsname\csname end#1\endcsname
\expandafter\gdef\csname breqn@begin@#1\endcsname{%
\expandafter\let\csname #1\expandafter\endcsname\csname breqn@oldbegin@#1\endcsname%
\begin{#2}%
}
\expandafter\gdef\csname breqn@end@#1\endcsname{%
\expandafter\let\csname end#1\expandafter\endcsname\csname breqn@oldend@#1\endcsname%
\end{#2}%
\expandafter\let\csname #1\expandafter\endcsname\csname breqn@begin@#1\endcsname%
\expandafter\let\csname end#1\expandafter\endcsname\csname breqn@end@#1\endcsname%
}
\expandafter\let\csname #1\expandafter\endcsname\csname breqn@begin@#1\endcsname
\expandafter\let\csname end#1\expandafter\endcsname\csname breqn@end@#1\endcsname
}
\wrap@breqn@environ{equation}{dmath}
\wrap@breqn@environ{equation*}{dmath*}
如果您希望覆盖默认的(未编号的)LyX 方程环境,则还添加以下内容:
\DeclareRobustCommand\[{\begin{equation*}}
\DeclareRobustCommand\]{\end{equation*}}
你可能想试试这个breqn
包。它为大公式提供自动换行。这样就无需手动修复分隔符或选择断点。当然,这不是真正的 LyX 功能,但它完全符合您的要求。
插入 -> 数学 -> AMS 多行环境
写下你的方程,然后在你想分割的地方点击“Ctrl+Enter”然后右键点击方程并选择数字整个公式
最近我不得不处理同样的问题。我的简单解决方案(不知道是否最好)是对多行使用 ctrl+enter,对于括号问题,您可以在括号、括号和大括号之后使用按钮,这将打开一个包含这些和许多其他内容的窗口选项,重要的是,同时有不同选择的选项,(像这样}。特别是,你可以选择“无”,每行只有“(”或“)”,(像 +/this ) 希望能帮助到你。
我“打破 lyx 中的长公式行”的方式是按需使用 breqn。该方法在这篇文章中进行了演示。
在 LyX "LaTeX Preamble" 中放入以下内容
\usepackage{amsmath}
\usepackage{etoolbox}
\usepackage{breqn}
\newcommand{\breqnoverloadothers}
{%
\renewenvironment{equation}{\ignorespaces\begin{dmath}}{\end{dmath}\ignorespacesafterend}%
\renewenvironment{equation*}{\ignorespaces\begin{dmath*}}{\end{dmath*}\ignorespacesafterend}%
\renewenvironment{multline}{\ignorespaces\begin{dmath}}{\end{dmath}\ignorespacesafterend}%
\renewenvironment{multline*}{\ignorespaces\begin{dmath*}}{\end{dmath*}\ignorespacesafterend}%
}
\newcommand\breqnundefineothers
{%
\renewenvironment{equation}{}{}%
\renewenvironment{equation*}{}{}%
\renewenvironment{multline}{}{}%
\renewenvironment{multline*}{}{}%
}
\AtBeginEnvironment{dmath}{\breqnundefineothers}
\AtBeginEnvironment{dmath*}{\breqnundefineothers}
\AtBeginEnvironment{dgroup}{\def\breqnundefineothers{}\breqnoverloadothers}
\AtBeginEnvironment{dgroup*}{\def\breqnundefineothers{}\breqnoverloadothers}
在 Lyx 中,对于要应用 breqn 的长方程,只需 1) 使用上面已重载的任何数学环境排版方程,即方程/方程*/multline/multline*,以及 2) 围绕方程( s) 使用 dmath 环境或 dgroup 环境,例如:
\begin{dmath}
hit ctrl+shift+M to insert a long equation here, and number the equation
\end{dmath}
或者
\begin{dgroup}
hit ctrl+shift+M to insert a long equation here, and number the equation
hit ctrl+shift+M again to insert another long equation here, and number the equation
\end{dgroup}
现在您可以导出为 PDF 并看到长方程由 breqn “自动”处理。未包含在 dmath 或 dgroup 中的方程不会受到影响。
屏幕截图已生成,但我没有上传它们的 10 点声誉。
我知道这有点老了,但有人可能仍然需要这些信息,就像我不久前一样。我最近遇到了类似的问题,中间打断了一条编号线。(lyx 2.04 及更高版本)。我使用了 lyx eqn 数组。将方程式全部放入 eqn 数组的右侧框中(其中有两个) 在要打破方程式的位置,按 CTRL+Enter。这会将您的方程式分成两行。如果您有一个编号的方程式数组,请使用以下命令切换上面的行: Alt+M Shift+N 以删除方程式编号,两行上只有一个方程式。