2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу 1, 2, 3  След.
 
 Форумный LaTeX - пара "хаков"
Сообщение16.05.2014, 15:24 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Пара "хаков":

Переключение режимов

\( формула \) = $ формула $ - но форум не реагирует на эти ограничители, и их можно делать вложенными внутри тега math.
\displaystyle - переключение в стиль выключной формулы (с большими дробями, символами сумм и интегралов)
\textstyle - переключение в стиль внутритекстовой формулы (с маленькими дробями, символами сумм и интегралов)
\dfrac{}{} , \tfrac{}{} - напечатать только дробь в выключном или внутритекстовом стиле

Пустые места (невидимые символы и формулы)

\phantom{ формула } - пустой прямоугольник такого же размера, как формула. Например: $\sqrt{\phantom{x}}$
\hphantom{ формула } - пустой горизонтальный объект такого же размера, как формула.
\vphantom{ формула } - пустой вертикальный объект такого же размера, как формула.
\mathstrut = \vphantom{(}

Примеры применения: $a_x^2b_y$ (некрасиво) $a_x^2b_y^{\vphantom{2}}$ (лучше)
$\begin{cases}\hphantom{0}x+3y=5\\7x-\hphantom{0}y=7\end{cases}$

Символы и формулы, не занимающие места (для наложения)

\lefteqn{ формула } - напечатать формулу справа от данной точки, и вернуться в данную точку. $\lefteqn{\rightarrow}a$ (Аргумент всегда печатается в displaystyle.)

\smash{ формула } - формула не имеет размера по вертикали
\smash[‌t]{ формула } - формула не имеет высоты (над базовой линией)
\smash[‌b]{ формула } - формула не имеет глубины (под базовой линией)

\llap{ текст } - напечатать текст слева от данной точки, и вернуться в данную точку.
\rlap{ текст } - напечатать текст справа от данной точки, и вернуться в данную точку.
    В этих командах отключается математический режим, поэтому внутри формул их стоит использовать так:
    \llap{\( формула \)}
    \rlap{\( формула \)}
    (при этом, аргумент печатается всегда в textstyle.) Дальше это используется без пояснений.
Эти команды используют "клей", и у меня не всегда работали корректно (может быть, руки кривые).

\makebox[0pt]{\( формула \)} = \makebox[0pt][с]{\( формула \)} - напечатать текст нулевой ширины, центрированный по данной точке
\makebox[0pt][l]{\( формула \)} - напечатать текст нулевой ширины справа от данной точки
\makebox[0pt][r]{\( формула \)} - напечатать текст нулевой ширины слева от данной точки

Например, можно выровнять по вертикали $i$ и $2$ в такой дроби: $\dfrac{-i\hphantom{-}}{\,\hphantom{2\,}\llap{\(\sqrt{2\,}\)}}$
Перечёркнутая лямбда: \rlap{\(\bar{\phantom{a}}\)}\lambda $\rlap{\(\bar{\phantom{a}}\)}\lambda$
Слеш-нотация: \rlap{\(/\)}p $\rlap{\(/\)}p$

Ещё примеры:
$\lefteqn{\overbrace{\phantom{1+2+3}}}1+\underbrace{2+3+4}$ $\makebox[0pt][l]{\(\overbrace{\phantom{1+2+3}}^{\textit{первые}}\)}1+\underbrace{2+3+4}_{\textit{вторые}}$ $\makebox[0pt][l]{$\sqrt{4}$}%
\makebox[0pt][l]{{\color{blue}$\sqrt{\vphantom{4}\hphantom{4}}$}}%
\hphantom{{\sqrt{4}}}%
=
\makebox[0pt][l]{$\sqrt{\dfrac{8}{2}}$}%
\makebox[0pt][l]{{\color{green}$\sqrt{\vphantom{\dfrac{8}{2}}\hphantom{\dfrac{8}{2}}}$}}%
\hphantom{{\sqrt{\dfrac{8}{2}}}}%
$
$$x^2+px+q=x^2+2\cdot\left(\frac{p}2}\right)\cdot x+q=
\makebox[0pt][l]{\color{magenta}\underbrace{\hphantom{x^2+2\left(\frac{p}2\right)+ \left(\frac{p}2\right)^2}\vphantom{x^2+2\left(\frac{p}2\right) x+\left(\frac{p}2\right)^2}}_{\makebox[0pt][c]{полный квадрат получился!}}}
x^2+2\left(\frac{p}2}\right) x+\overbrace{\left(\frac{p}2\right)^2-\left(\frac{p}2\right)^2}^\substack{\text{\color{blue}чисто}\\ \text{\color{blue}нолик прибавили!}}} + q =\left(x+\frac{p}2}\right)^2-\left(\frac{p}2}\right)^2+q.$$

Другие способы комбинации символов

r1 \joinrel r2 - написание подряд слитно символов r1 и r2. Символы должны быть символами отношения (\mathrel). Например: $\mathrel{|}\joinrel =$
\mkernXmu - точное расстояние между символами, в единицах mu.
\mathaccent c1c2 - печать символа c1 ("акцента") поверх символа c2. Например: $\mathaccent \cdot \cup$
\not - зачёркивание любого символа. Например: $\not\perp$

\stackrel{ формула сверху }{ формула } - печать надписи сверху. Например: \stackrel{\mathrm{def}}{=} $\stackrel{\mathrm{def}}{=}$

\overset{ индекс сверху }{ формула } - печать индекса сверху: $\overset{a}{X}$
\underset{ индекс снизу }{ формула } - печать индекса снизу: $\underset{b}{X}$

{}_{s1}^{s2}S_{s3}^{s4} - индексы слева и справа для обычных символов: ${}_{s1}^{s2}S_{s3}^{s4}$
\sideset{_{s1}^{s2}}{_{s3}^{s4}}S - индексы слева и справа для символов операций (\mathop): $\sideset{_{s1}^{s2}}{_{s3}^{s4}}\sum$
Полный набор индексов:
$\sideset{_a^b}{_{ccc}^{ddd}}{\mathop{\scalebox{1.5}{\(\digamma\)}}}\limits_{e}^{f}$

\substack{ формула \\ формула } - многострочные индексы: $\displaystyle\sum_{\substack{i,j=1\\i\ne j}}^n$

Сдвиги вверх и вниз

\raisebox{ высота }{\( формула \)} - сдвиг текст на указанную высоту (положительную или отрицательную). Единицы измерения:
    pt - пункты,
    ex - высота $x,$
    em - ширина $M,$
    \height - высота текста над базовой линией
    \depth - глубина текста под базовой линией
    \totalheight - полная высота текста
Например: $x\raisebox{\depth}{\(q\)}\raisebox{-\height}{\(x\)}x$

\begin{array}[‌t]{c} массив \end{array} - выравнивание массива по верхней строке
\begin{array}[‌b]{c} массив \end{array} - выравнивание массива по нижней строке

Повороты и отражения

\scalebox{ масштаб }[ верт. масштаб ]{\( формула \)} - масштабирование текста с коэффициентами (если вертикальный масштаб не задан, то = горизонтальному)
\reflectbox{\( формула \)} - отражение текста по горизонтали (по вертикали - в сочетании с \rotatebox)
\resizebox*{ гор. размер }{ верт. размер }{\( формула \)} - масштабирование текста в точные размеры
\resizebox*{!}{ верт. размер }{\( формула \)} - масштабирование текста в точный вертикальный размер
\resizebox*{ гор. размер }{!}{\( формула \)} - масштабирование текста в точный горизонтальный размер
\rotatebox{ угол в градусах }{\( формула \)} - поворот текста вокруг начальной точки
\rotatebox[‌c]{ угол в градусах }{\( формула \)} - поворот текста вокруг центральной точки

Например: $\rlap{\reflectbox{\(\mathsf{L}\)}}\rotatebox[c]{180}{\(\mathsf{L}\)}$

(Написано при участии Алексей К.)

 Профиль  
                  
 
 Re: Форумный LaTeX - пара хаков
Сообщение16.05.2014, 16:59 
Заслуженный участник


27/04/09
28128
Это было бы превосходно в другом разделе. :appl:

 Профиль  
                  
 
 Re: Форумный LaTeX - пара хаков
Сообщение17.05.2014, 02:13 
Заслуженный участник


16/02/13
4206
Владивосток
Да уж. Хорошо бы отдельным ФАКом, со ссылкой из формы ответа.

 Профиль  
                  
 
 Re: Форумный LaTeX - пара хаков
Сообщение17.05.2014, 11:58 
Заслуженный участник
Аватара пользователя


30/01/06
72407
arseniiv
Примеры применения ещё не набросаете? А то у меня мало фантазии.

-- 17.05.2014 13:00:28 --

$\makebox[0pt][l]{\(\overbrace{\phantom{1+2+3}}^{\textit{первые}}\)}1+\underbrace{2+3+4}_{\textit{вторые}}$

 Профиль  
                  
 
 Posted automatically
Сообщение17.05.2014, 12:00 
Админ форума
Аватара пользователя


19/03/10
8952
 i  Тема перемещена из форума «Тестирование» в форум «TeXнические обсуждения»

 Профиль  
                  
 
 Re: Форумный LaTeX - пара хаков
Сообщение17.05.2014, 12:08 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Пояснение: здесь я собрал то, чем мне постоянно то и дело приходится пользоваться. Чтобы не держать в памяти, я бы хотел занести это в форумный FAQ.

Так что, если вы, arseniiv, или кто-то ещё, тоже имеете свои постоянные "примочки", я думаю, их можно дописать сюда.

 Профиль  
                  
 
 Re: Форумный LaTeX - пара хаков
Сообщение17.05.2014, 14:22 
Заслуженный участник
Аватара пользователя


31/01/14
11312
Hogtown
команды \shoveleft и \shoveright в multline

\begin{multline}
\text{some expression }=\\
\shoveright{\text{another expression }}\\
\shoveleft{\text{yet another expression }}\\
{\text{yet another expression }}
\end{multline}

Но все эти "примочки" = стандарт LaTeX + amsmath. В mathtools

 Профиль  
                  
 
 Re: Форумный LaTeX - пара хаков
Сообщение17.05.2014, 15:15 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Да, кстати!

Как использовать окружения формул, отличающиеся от стандартных "одинарных" и "двойных долларов".

Если написать тег [‌math][/‌math] без знаков доллара - результат будет скормлен LaTeX в текстовом режиме. Форум не будет знать, что результат надо "выключить", и просто вставит его в строку. Если надо получить в результате выключную формулу, надо поставить дополнительно вокруг тег центрирования: [‌c][‌math][/‌math][/‌c]. Например:
\begin{multline}
\text{some expression }=\\
\shoveright{\text{another expression }}\\
\shoveleft{\text{yet another expression }}\\
{\text{yet another expression }}
\end{multline}

 Профиль  
                  
 
 Re: Форумный LaTeX - пара "хаков"
Сообщение17.05.2014, 17:13 
Заслуженный участник
Аватара пользователя


31/01/14
11312
Hogtown
В реальном TeX я предпочитаю mathtools и код

Код:
\begin{align*}
&\smashoperator{\sum_{2q+2l+2j\ge 3}^{} }\qquad B^w_{qjl}+\\
&\smashoperator{\sum_{2k+2q+2m+2s+2l\ge 3}^{}}\qquad B^w_{kqjmsl}
\end{align*}


дает


Изображение

а не

\begin{align*}
&\smashoperator{\sum_{2q+2l+2j\ge 3}^{} }\qquad B^w_{qjl}+\\
&\smashoperator{\sum_{2k+2q+2m+2s+2l\ge 3}^{}}\qquad B^w_{kqjmsl}
\end{align*}

 Профиль  
                  
 
 Re: Форумный LaTeX - пара "хаков"
Сообщение17.05.2014, 17:39 
Заслуженный участник
Аватара пользователя


30/01/06
72407
К сожалению, здесь mathtools недоступны. Это предложение для документации для пользователей форума. А преамбулу на форуме не хотят менять.

Ваш пример можно набрать так:
\begin{align*}
&\sum_{\makebox[0pt]{\(\scriptstyle 2q+2l+2j\geqslant 3\)}}\qquad B^w_{qjl}+{}\\
{}+{}\qquad&\sum_{\makebox[0pt]{\(\scriptstyle 2k+2q+2m+2s+2l\geqslant 3\)}}\qquad B^w_{kqjmsl}
\end{align*}

-- 17.05.2014 18:43:00 --

Как раз с использованием вышеупомянутого "хака" \makebox[0pt]{\( ... \)}
Он позволяет индексам у знаков суммы "не занимать места".
Также используется \scriptstyle , чтобы индексы печатались в нужном размере.
И наконец, в русской традиции используются $\geqslant,$ а не $\ge,$ и при переносе формулы знак повторяют до и после переноса.

-- 17.05.2014 18:44:59 --

И чтобы знак бинарной операции ``$+$'' стоял с правильными пробелами, вокруг него ставятся пустые формулы {} , чтобы формула не начиналась и не заканчивалась на него.

 Профиль  
                  
 
 Re: Форумный LaTeX - пара "хаков"
Сообщение17.05.2014, 18:19 
Заслуженный участник
Аватара пользователя


31/01/14
11312
Hogtown
Munin в сообщении #864441 писал(а):
\makebox[0pt]{\( ... \)}


замещает \smashoperator{}, который, однако, может иметь опции [l] и [r]; тогда "зануляется" только левая или правая часть индексов. К сожалению, многие хаки делают код тяжеловесным.

На самом деле основные претензии к форуму—старое s/w. Я подозреваю, что и phpbb не очень новое, а ТеХ вообще скомпилирован давным давно. Кстати, если я правильно помню свой опыт, нужен ocaml для компиляции переходника между форумом и TeX и преамбула закладывается именно на этом этапе (я сам компилировал с несколькими лишними пакетами). При этом я вовсе не предлагаю что-то менять: этак можно костей не собрать.

 Профиль  
                  
 
 Re: Форумный LaTeX - пара "хаков"
Сообщение17.05.2014, 18:27 
Заслуженный участник


27/04/09
28128
Munin в сообщении #864441 писал(а):
А преамбулу на форуме не хотят менять.
Может, хотя бы ради mathtools захотят? Почитал его описание.

Спасибо, что упомянули, Red_Herring — пригодится когда-нибудь!

 Профиль  
                  
 
 Re: Форумный LaTeX - пара "хаков"
Сообщение17.05.2014, 18:31 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Red_Herring в сообщении #864457 писал(а):
На самом деле основные претензии к форуму—старое s/w.

На самом деле, данная тема заводилась вовсе не для того, чтобы высказывать претензии к форуму. Если очень хочется, можете завести новую тему.

 Профиль  
                  
 
 Re: Форумный LaTeX - пара "хаков"
Сообщение17.05.2014, 22:33 


29/09/06
4552
Алексей К. в ответ на какой-то бред в сообщении #253663 писал(а):
Верны ли, по-Вашему, равенства
$$\makebox[0pt][l]{$\sqrt{4}$}%
\makebox[0pt][l]{{\color{blue}$\sqrt{\vphantom{4}\hphantom{4}}$}}%
\hphantom{{\sqrt{4}}}%
=
\makebox[0pt][l]{$\sqrt{\dfrac{8}{2}}$}%
\makebox[0pt][l]{{\color{green}$\sqrt{\vphantom{\dfrac{8}{2}}\hphantom{\dfrac{8}{2}}}$}}%
\hphantom{{\sqrt{\dfrac{8}{2}}}}%
$$Нано$\TeX$нологи, кстати, заинтересовались и торопят.


-- 17 май 2014, 23:41:54 --

$$x^2+px+q=x^2+2\cdot\left(\frac{p}2}\right)\cdot x+q=
\makebox[0pt][l]{\color{magenta}\underbrace{\hphantom{x^2+2\left(\frac{p}2\right)+ \left(\frac{p}2\right)^2}\vphantom{x^2+2\left(\frac{p}2\right) x+\left(\frac{p}2\right)^2}}_{\makebox[0pt][c]{полный квадрат получился!}}}
x^2+2\left(\frac{p}2}\right) x+\overbrace{\left(\frac{p}2\right)^2-\left(\frac{p}2\right)^2}^\substack{\text{\color{blue}чисто}\\ \text{\color{blue}нолик прибавили!}}} + q =\left(x+\frac{p}2}\right)^2-\left(\frac{p}2}\right)^2+q.$$

 Профиль  
                  
 
 Re: Форумный LaTeX - пара "хаков"
Сообщение17.05.2014, 23:25 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Это примеры применения? Спасибо :-)

Кстати, про цвета ещё можно было бы добавить... или не надо - боюсь, все начнут формулы раскрашивать :-)

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 37 ]  На страницу 1, 2, 3  След.

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



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

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


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

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