2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу 1, 2, 3  След.
 
 Вопрос по TEX
Сообщение03.09.2006, 21:06 


26/09/05
530
Вопрос по TeX.Есть формула,которая не умещается на одной строчке.
Приходиться эту формулу разбивать в ручную на блоки вот такие:
$$
...=
$$
$$
=...
$$
Как мне сделать,чтобы TEX сам разбил эту формулу?

 Профиль  
                  
 
 
Сообщение03.09.2006, 21:19 
Основатель
Аватара пользователя


11/05/05
4312
 !  Переместил из Свободного полета.

 Профиль  
                  
 
 Re: Вопрос по TEX
Сообщение03.09.2006, 23:35 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Falex писал(а):
Как мне сделать,чтобы TEX сам разбил эту формулу?


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

 Профиль  
                  
 
 
Сообщение04.09.2006, 01:24 
Заслуженный участник
Аватара пользователя


23/07/05
17973
Москва
$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 


26/09/05
530
Ну и как.КАк сделать...
Например,вот формула (она из 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 
Аватара пользователя


05/11/05
55
Москва
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 
Заслуженный участник
Аватара пользователя


03/03/06
648
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 


17/09/05
121
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 
Заслуженный участник
Аватара пользователя


23/07/05
17973
Москва
Вот то, что мне самому подсказали в конференции 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 


17/09/05
121
Спасибо.

 Профиль  
                  
 
 
Сообщение10.09.2006, 03:12 


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

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

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


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

 Профиль  
                  
 
 
Сообщение10.09.2006, 14:19 
Заслуженный участник
Аватара пользователя


23/07/05
17973
Москва
nworm писал(а):
Никто не знает, как правильно переносить?


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

 Профиль  
                  
 
 
Сообщение14.09.2006, 00:07 


17/09/05
121
Ещё, что интересно, она неправильно переносит отрицания, например,
Код:
\not\subset

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

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

 Профиль  
                  
 
 
Сообщение11.11.2006, 10:30 
Заслуженный участник
Аватара пользователя


09/07/05
210
МехМат МГУ
Someone, огромный респект за этот def. Я попытаюсь его усовершенствовать, а то уже надоело самому развешивать переносы.

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

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

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


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


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

 Профиль  
                  
 
 
Сообщение11.11.2006, 22:59 


17/09/05
121
Спасибо.

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


Получаем опытным путём :)
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  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group