LyX - ломать длинные строки формулы - PullRequest
21 голосов
/ 25 мая 2010

Как я могу разбить длинные формулы в LyX на две (или более) строки? Я знаю, как написать несколько строк уравнений в одном «математическом блоке», но я ищу решение для разбиения строк даже в середине скобок.

Я использую LyX 1.6.4 и в настоящее время, когда формула слишком велика, она ничего не делает (просто не печатает последний сегмент, который находится «за пределами» страницы).

Возможно ли это в LyX?

Ответы [ 6 ]

5 голосов
/ 25 мая 2010

Да, но вы должны сделать это вручную.

Выезд:

  1. Как я могу иметь разрывы строк в моих длинных уравнениях LaTeX?
  2. Латексные многострочные уравнения

Lyx имеет элемент управления «Вставка -> Математика -> Многострочная среда AMS», или вы можете использовать рекомендованные выше решения, вводя Latex напрямую с помощью элемента управления «Вставка латекса».

Записка о браке

Майкл Даунс сделал несколько экстраординарных кодировок Tex с этим пакетом, но он недостаточно надежен для общего использования - он в основном несовместим с Amsmath, например, ломает трудные для понимания пути и делает некоторые явно несостоятельные разрывы строк в формулах.

Автоматический разрыв строки в формулах отображения был указан как одна из главных открытых задач исследования в Tex .

4 голосов
/ 19 августа 2011

Если вы включите \ usepackage {breqn} в LyX «LaTeX Preamble» (плюс следующий код), тогда стандартная среда «уравнения» (отображаемая формула) автоматически сломается, как вы хотите.

% 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*}

Добавлено 2016-12-08:

Если вы хотите переопределить стандартную (ненумерованную) среду уравнений LyX, добавьте также следующее:

\DeclareRobustCommand\[{\begin{equation*}}
\DeclareRobustCommand\]{\end{equation*}}
3 голосов
/ 26 мая 2010

Возможно, вы захотите попробовать пакет breqn. Это обеспечивает автоматический разрыв строки для больших формул. Таким образом, нет необходимости вручную фиксировать разделители или выбирать точки останова. Конечно, это не настоящая функциональность LyX, но она делает именно то, что вы хотите.

0 голосов
/ 04 мая 2017

Я знаю, что это немного устарело, но кому-то может понадобиться эта информация, как я не так давно. У меня недавно были подобные проблемы, ломая пронумерованную линию в середине. (Lyx 2.04 и выше). Я использовал массив Lyx EQN. Поместите уравнение, все это в правую рамку массива eqn (их два) В тот момент, когда вы хотите нарушить уравнение, нажмите CTRL + Enter. Это разбивает ваше уравнение на две строки. Если у вас есть массив нумерованных уравнений, переключите верхнюю строку с помощью: Alt + M Shift + N, чтобы удалить номер уравнения, оставляя только одно уравнение в двух строках.

0 голосов
/ 10 марта 2015

Мой способ «ломать длинные строки формул в 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) Surround уравнение (я) с использованием среды 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-балльной репутации для их загрузки.

0 голосов
/ 16 января 2014

Совсем недавно мне пришлось столкнуться с той же проблемой. Мое простое решение (не знаю, будет ли лучше) использовать ctrl + enter для нескольких строк и, для проблемы с круглыми скобками, вы можете использовать кнопку сразу после скобок, скобок и скобок, которая открывает окно с этими и многими другими параметры и, что важно, возможность иметь разные варианты одновременно (как это}. В частности, вы можете выбрать «нет» и иметь только «(» или «)» для каждой строки, (лайк + / Это) Надеюсь, это поможет.

...