LINUX.ORG.RU

Перенос формул в латехе.


0

0

Собственно у меня есть довольно длинная формула. Если делать в виде:

\begin{math} ............. \end{math}

То формула переносится нормально. Если же заменить math на equation то никаких переносов не делается и формула идёт в одну строку. Мне собственно надо чтобы переносы в формуле делались автоматически и формула нумеровалась.

anonymous

%b e g i n { l a t e x o n l y } \ r e n e w c o m m a n d \ ne { \ mathchar " 3 2 3 6 \ mathchar " 3 0 3D\ nobreak \ d i s c r e t i o n a r y { } { \ u s e f o n t {OMS} { c m s y } {m} { n } \ c h a r " 3 6 \ u s e f o n t {OT1 } { c m r } {m} { n } \ c h a r " 3D} { } } \ b e g i n g r o u p \ c a t c o d e ` \ + \ a c t i v e \ g d e f +{\mathchar 8 2 3 5 \ nobreak \ d i s c r e t i o n a r y { }% { \ u s e f o n t {OT1 } { c m r } {m} { n } \ c h a r 4 3 } { } } \ c a t c o d e ` \ - \ a c t i v e \ g d e f -{\mathchar 8 7 0 4 \ nobreak \ d i s c r e t i o n a r y { }% { \ u s e f o n t {OMS} { c m s y } {m} { n } \ c h a r 0 } { } } \ c a t c o d e ` \ = \ a c t i v e \ g d e f ={\mathchar 1 2 3 4 9 \ nobreak \ d i s c r e t i o n a r y { }% { \ u s e f o n t {OT1 } { c m r } {m} { n } \ c h a r 6 1 } { } } \ endgroup \ d e f \ c d o t { \ mathchar 8 7 0 5 \ nobreak \ d i s c r e t i o n a r y { }% { \ u s e f o n t {OMS} { c m s y } {m} { n } \ c h a r 1 } { } } \ d e f \ t i m e s { \ mathchar 8 7 0 6 \ nobreak \ d i s c r e t i o n a r y { }% { \ u s e f o n t {OMS} { c m s y } {m} { n } \ c h a r 2 } { } } \ mathcode ` \ = = 3 2 7 6 8 \ mathcode ` \ + = 3 2 7 6 8 \ mathcode ` \ - = 3 2 7 6 8 %e n d { l a t e x o n l y }

оно?

anonymous
()
Ответ на: комментарий от anonymous

%begin{latexonly}

\renewcommand \ne{\mathchar"3236\mathchar"303D\nobreak

\discretionary{}{\usefont{OMS}{cmsy}{m}{n}\char"36\usefont{OT1}{cmr}{m}{n}\ char"3D}{}}

\begingroup

\catcode`\+\active \gdef+{\mathchar8235 \nobreak \discretionary{}%

{\usefont{OT1}{cmr}{m}{n} \char43}{}}

\catcode`\-\active \gdef-{\mathchar8704 \nobreak \discretionary{}%

{\usefont{OMS}{cmsy}{m}{n} \char0}{}}

\catcode`\ =\active \gdef ={\mathchar12349 \nobreak \discretionary{}%

{\usefont{OT1}{cmr}{m}{n} \char61}{}} \endgroup

\def \cdot{\mathchar8705 \nobreak \discretionary{}%

{\usefont{OMS}{cmsy}{m}{n}\char1}{}}\def \times{\mathchar8706 \nobreak \discretionary{}% {\usefont{OMS}{cmsy}{m}{n} \char2}{}}

\mathcode`\ ==32768 \mathcode`\+=32768 \mathcode `\-=32768

%end{latexonly}

sorry за ту кашу. :-)

anonymous
()
Ответ на: комментарий от anonymous

Что-то данный код не работает у меня.
Я пробовал что-то похожее согласно fido7.ru faq:

\begingroup
\catcode`\+\active\gdef+{\mathchar8235\nobreak\discretionary{}%
 {\usefont{OT1}{cmr}{m}{n}\char43}{}}
\catcode`\-\active\gdef-{\mathchar8704\nobreak\discretionary{}%
 {\usefont{OMS}{cmsy}{m}{n}\char0}{}}
\catcode`\=\active\gdef={\mathchar12349\nobreak\discretionary{}%
 {\usefont{OT1}{cmr}{m}{n}\char61}{}}
\endgroup
\def\cdot{\mathchar8705\nobreak\discretionary{}%
 {\usefont{OMS}{cmsy}{m}{n}\char1}{}}
\def\times{\mathchar8706\nobreak\discretionary{}%
 {\usefont{OMS}{cmsy}{m}{n}\char2}{}}
\mathcode`\=2768
\mathcode`\+2768
\mathcode`\-2768

Ругалось что "\textfont 10 is undefined (character п)"
А этот код у меня тоже что-то неработает - что-то там намудренно с переносами. Может попробуй закинуть как "preformated text"

anonymous
()

Для длинных формул вроде ams-tex есть.

usepackage{amsmath,amssymb}

\begin{split} .... \end{split}

См. документацию по ams-tex, она есть в дистрибутивах обычно.

yvv ★★☆
()
Ответ на: комментарий от yvv

Приведённый выше код не работал потому что использовался пакет amsmath. И всё равно переносы не не работают когда \begin{equation} .. \end{equation}. А данный код служит чтобы дублировать знаки +, - и т. д при переносе. Мне же надо автоматические переносы когда формула записана в виде \begin{equation} .. \end{equation}. Причём чтобы не разрывало формулы на произведениях, а по возможности чтобы рвало на знаке "=", а если часть формулы между двумя знаками "=" слишком длинна тогда рвать формулу на знаках +, -, причём по-возможности не рвать на знаках +, -, находащихся внутри скобок.

По поводу asmmath сейчас буду смотреть.

anonymous
()
Ответ на: комментарий от anonymous

Я бы не мучился с автоматическим переносом, а поробовал бы тот же split, multline и т.д. из amsmath.

gene
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.