2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2, 3  След.
 
 Вопрос по TEX
Сообщение03.09.2006, 21:06 
Вопрос по TeX.Есть формула,которая не умещается на одной строчке.
Приходиться эту формулу разбивать в ручную на блоки вот такие:
$$
...=
$$
$$
=...
$$
Как мне сделать,чтобы TEX сам разбил эту формулу?

 
 
 
 
Сообщение03.09.2006, 21:19 
Аватара пользователя
 !  Переместил из Свободного полета.

 
 
 
 Re: Вопрос по TEX
Сообщение03.09.2006, 23:35 
Аватара пользователя
Falex писал(а):
Как мне сделать,чтобы TEX сам разбил эту формулу?


Насколько мне известно, такая возможность в ТеХ не предусмотрена. Считается, что автор сам отвечает за верстку своего текста. В частности, сам решает, как следует разбить сложную формулу.

 
 
 
 
Сообщение04.09.2006, 01:24 
Аватара пользователя
$1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1$

Но вот повтор знака равенства (и знаков бинарных операций и отношений) при переносе действительно не предусмотрен. Для этого нужно включить соответствующие определения в преамбулу документа.

 
 
 
 
Сообщение04.09.2006, 08:05 
Ну и как.КАк сделать...
Например,вот формула (она из 3-х состоит):
$$
(\mu+1)z^{\mu}=-
n\,z^{\mu+1}+\sum\nolimits_{k=1}^n\sum\nolimits_{j=0}^{\mu+1}
C_{\mu+1}^{j}\,z^{\mu+1-j}\alpha_{k}^{j}=
$$
$$
=-n\,z^{\mu+1}+\sum\nolimits_{j=0}^{\mu+1}
C_{\mu+1}^{j}\,z^{\mu+1-j}\sum\nolimits_{k=1}^n\alpha_{k}^{j}=
-n\,z^{\mu+1}+\sum\nolimits_{j=0}^{\mu+1} C_{\mu+1}^{j}\,z^{\mu+1-
j}S_j=
$$
$$
=-n\,z^{\mu+1}+C_{\mu+1}^{0}\,z^{\mu+1}S_0
+C_{\mu+1}^{1}\,z^{\mu}S_1+C_{\mu+1}^{\mu+1}\,S_{\mu+1}=
$$

 
 
 
 
Сообщение04.09.2006, 08:27 
Аватара пользователя
ad libitum. Если Вам нужна именно выключенная формула:
(Об этом захватывающе пишут классики:КЧ (стр.182--186), либо Львовский (стр.80--86) :) )

\begin{equation*}
\begin{split}
(\mu+1)z^{\mu}&=-
n\,z^{\mu+1}+\sum\nolimits_{k=1}^n\sum\nolimits_{j=0}^{\mu+1}
C_{\mu+1}^{j}\,z^{\mu+1-j}\alpha_{k}^{j}=\\
&=-n\,z^{\mu+1}+\sum\nolimits_{j=0}^{\mu+1}
C_{\mu+1}^{j}\,z^{\mu+1-j}\sum\nolimits_{k=1}^n\alpha_{k}^{j}=
-n\,z^{\mu+1}+\sum\nolimits_{j=0}^{\mu+1} C_{\mu+1}^{j}\,z^{\mu+1-
j}S_j=\\
&=-n\,z^{\mu+1}+C_{\mu+1}^{0}\,z^{\mu+1}S_0
+C_{\mu+1}^{1}\,z^{\mu}S_1+C_{\mu+1}^{\mu+1}\,S_{\mu+1}=
\end{split}
\end{equation*}

====================

\begin{multline*}
(\mu+1)z^{\mu}=-
n\,z^{\mu+1}+\sum\nolimits_{k=1}^n\sum\nolimits_{j=0}^{\mu+1}
C_{\mu+1}^{j}\,z^{\mu+1-j}\alpha_{k}^{j}=\\
=-n\,z^{\mu+1}+\sum\nolimits_{j=0}^{\mu+1}
C_{\mu+1}^{j}\,z^{\mu+1-j}\sum\nolimits_{k=1}^n\alpha_{k}^{j}=
-n\,z^{\mu+1}+\sum\nolimits_{j=0}^{\mu+1} C_{\mu+1}^{j}\,z^{\mu+1-
j}S_j=\\
=-n\,z^{\mu+1}+C_{\mu+1}^{0}\,z^{\mu+1}S_0
+C_{\mu+1}^{1}\,z^{\mu}S_1+C_{\mu+1}^{\mu+1}\,S_{\mu+1}=
\end{multline*}

==========================

\begin{gather*}
$$(\mu+1)z^{\mu}=-
n\,z^{\mu+1}+\sum\nolimits_{k=1}^n\sum\nolimits_{j=0}^{\mu+1}
C_{\mu+1}^{j}\,z^{\mu+1-j}\alpha_{k}^{j}=$$\\
$$=-n\,z^{\mu+1}+\sum\nolimits_{j=0}^{\mu+1}
C_{\mu+1}^{j}\,z^{\mu+1-j}\sum\nolimits_{k=1}^n\alpha_{k}^{j}=
-n\,z^{\mu+1}+\sum\nolimits_{j=0}^{\mu+1} C_{\mu+1}^{j}\,z^{\mu+1-
j}S_j=$$\\
$$=-n\,z^{\mu+1}+C_{\mu+1}^{0}\,z^{\mu+1}S_0
+C_{\mu+1}^{1}\,z^{\mu}S_1+C_{\mu+1}^{\mu+1}\,S_{\mu+1}=$$
\end{gather*}

et cetera. :)
(невыключенную формулу ТеХ разбивает сам)

 
 
 
 
Сообщение04.09.2006, 18:37 
Аватара пользователя
Falex

Я, например, при большой выключной формуле пользую для переноса вручную окружение \begin{array} \end{array}, т.к. можно ровнять в зависимости от пложения формул (короткие части скажем).

Вот откопал у себя примерчик

\begin{equation*} 
\begin{array}{l}
f(z_1,z_2,...,z_m)=\sum\limits_{j=1}^{k}\dfrac{\Delta_j}{3}\sum\limits_{i=1}^{m}w_{ij} \left( \dfrac{B_1^{i}C_{1}^{i}z_{i}}{C_1^i z_i+1} \right.+
 \dfrac{B_2^iC_2^iz_i}{C_2^i z_i+1}+\\+\left. \dfrac{B_3^iC_3^iz_i}{C_3^iz_i+1}\right) -\sum\limits_{i=1}^{m}z_i  \quad \to \max\\
\\
\mbox{при ограничениях}\\
\left\{ 
\begin{array}{l}
z_i \ge 0, \quad i=1,2,\ldots ,m.\\
\end{array} 
\right.
\end{array}
\end{equation*}
Если нужен номер уберите звездочку. Также убодно регулировать расстояния между строками(иной раз это стандартными средствами смотрится некрасиво).

 
 
 
 
Сообщение05.09.2006, 16:59 
Someone писал(а):
$1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1=1$

Но вот повтор знака равенства (и знаков бинарных операций и отношений) при переносе действительно не предусмотрен. Для этого нужно включить соответствующие определения в преамбулу документа.


Someone

Не могли бы Вы разместить здесь эти определения? Если, конечно, не сложно. Заранее спасибо.

 
 
 
 Переносы формул
Сообщение05.09.2006, 18:09 
Аватара пользователя
Вот то, что мне самому подсказали в конференции fido7.ru.tex. Список символов, дублируемых при переносе формулы, можно расширять, но нужно знать их коды, а я не знаю, где их искать.

Обращаю внимание на команду "\?", которая дублирует при переносе символ, следующий за ней.

Код:
\documentclass[a4paper,10pt]{amsart}

\xdef\LastDeclaredEncoding{T2A}

\usepackage{mathtext}
\usepackage{amssymb}
\usepackage[T2A]{fontenc}
\usepackage[cp1251]{inputenc}
\usepackage[russian,english]{babel}

% Переносы математики
\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}{}}
\catcode`\<\active\gdef<{\mathchar"313C\nobreak\discretionary{}{\usefont{OML}{cmm}{m}{n}\char60}{}}
\catcode`\>\active\gdef>{\mathchar"313E\nobreak\discretionary{}{\usefont{OML}{cmm}{m}{n}\char62}{}}
\endgroup
\def\times{\mathchar8706\nobreak\discretionary{}{\usefont{OMS}{cmsy}{m}{n}\char2}{}}
\def\subset{\mathchar"321A\nobreak\discretionary{}{\usefont{OMS}{cmsy}{m}{n}\char26}{}}
%\supset,\subseteq,\notin
\def\supset{\mathchar"321B\nobreak\discretionary{}{\usefont{OMS}{cmsy}{m}{n}\char27}{}}
\def\subseteq{\mathchar"3212\nobreak\discretionary{}{\usefont{OMS}{cmsy}{m}{n}\char18}{}}
\def\neq{\not=\nobreak\discretionary{}{\usefont{OMS}{cmsy}{m}{n}\char54\usefont{OT1}{cmr}{m}{n}\char61}{}}
\def\sim{\mathchar"3218\nobreak\discretionary{}{\usefont{OMS}{cmsy}{m}{n}\char24}{}}
\def\in{\mathchar"3232\nobreak\discretionary{}{\usefont{OMS}{cmsy}{m}{n}\char50}{}}
\def\to{\mathchar"3221\nobreak\discretionary{}{\usefont{OMS}{cmsy}{m}{n}\char33}{}}
\def\?#1{#1\nobreak\discretionary{}{\hbox{$\mathsurround=0pt #1$}}{}}
% Конец переносов математики

% Все остальные определения.

\begin{document}

% Восстанавливаем после amsmath
\begingroup \catcode`\"=12
\gdef\newmcodes@{\mathcode`\'39\mathcode`\*42\mathcode`\."613A%
\mathcode`\-"8000\mathcode`\/47\mathcode`\:"603A\relax}%
\endgroup
\mathcode`\=="8000 \mathcode`\+="8000 \mathcode`\-="8000
\mathcode`\<="8000 \mathcode`\>="8000

% Текст документа.

\end{document}

 
 
 
 
Сообщение06.09.2006, 18:00 
Спасибо.

 
 
 
 
Сообщение10.09.2006, 03:12 
Совсем с этим замучился. Пытался перенести \geqslant ($\geqslant$ больше или равно из amssymb).

Лучшее, что у меня получилось

Код:
\def\geqslant{\ \mathchar1086\nobreak\ \discretionary{}{\usefont{U}{msa}{m}{n}\char62}{}}


Если не ставить "\ ", то она не делает пробелы до и после знака. Никто не знает, как правильно переносить?

 
 
 
 
Сообщение10.09.2006, 14:19 
Аватара пользователя
nworm писал(а):
Никто не знает, как правильно переносить?


Можно в том месте, где требуется дублирование при переносе, написать \?\geqslant
Но это, естественно, отказ от автоматизма: нужно смотреть, где возник перенос, и вставлять \? вручную. А писать \? всюду, где может возникнуть перенос, не хочется.

 
 
 
 
Сообщение14.09.2006, 00:07 
Ещё, что интересно, она неправильно переносит отрицания, например,
Код:
\not\subset

Если кто поможет, буду очень благодарен.

P.S. C
Код:
\geqslant
так пока и не справился.

 
 
 
 
Сообщение11.11.2006, 10:30 
Аватара пользователя
Someone, огромный респект за этот def. Я попытаюсь его усовершенствовать, а то уже надоело самому развешивать переносы.

nworm писал(а):
Совсем с этим замучился. Пытался перенести \geqslant ($\geqslant$ больше или равно из amssymb).

Лучшее, что у меня получилось

Код:
\def\geqslant{\ \mathchar1086\nobreak\ \discretionary{}{\usefont{U}{msa}{m}{n}\char62}{}}


Если не ставить "\ ", то она не делает пробелы до и после знака. Никто не знает, как правильно переносить?


Мдя, ну тут же не сказано, что это \mathbin. Уверен, что это поможет. Только люди, откуда вы коды символов дёргаете? Я вот не умею... Научите!

 
 
 
 
Сообщение11.11.2006, 22:59 
Спасибо.

Цитата:
Только люди, откуда вы коды символов дёргаете? Я вот не умею... Научите!


Получаем опытным путём :)
1. В TeX (версия работающая в Windows) есть файл "C:\texmf\tex\latex\base\fontmath.ltx".
Там довольно много кодов. Например,

Код:
\DeclareMathSymbol{>}{\mathrel}{letters}{"3E}


Число 3E - шестнадцатиричный код. В def-е Someone

Код:
\catcode`\>\active\gdef>{\mathchar"313E\nobreak\discretionary{}{\usefont{OML}{cmm}{m}{n}\char62}{}}


есть ещё цифра в строке char62 - число 3E в десятичной системе счисления.
Есть ещё символы, которых нет в fontmath.ltx, например, $\geqslant$ можно посмотреть где-нибудь ещё, например здесь.

 
 
 [ Сообщений: 41 ]  На страницу 1, 2, 3  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group