Asked
10 years, 1 month ago
Viewed
3k times
I’m using the amsthm
package. The statement of the theorem currently appears immediately after the words «Theorem X.» I’d like the statement of the theorem to appear on a new line. Is this possible?
lockstep
244k69 gold badges709 silver badges780 bronze badges
asked Feb 27, 2013 at 9:34
Considering the following MWE
1: documentclass{article}
2:
3: usepackage{amsthm}
4: newtheorem{thm}{Theorem}
5:
6: begin{document}
7:
8: begin{thm}[Pythagoras' Theorem]
9: In a right angled triangle the square of the hypotenuse is
10: equal to the sum of the squares of the other two sides.
11: end{thm}
12:
13: end{document}
there are two possible approaches.
-
The ad hoc solution:
Simply adding a
~\
at the end of line 8 of the MWE will yield your desired behaviour. However, you will have to do this every time you state a theorem. -
The ‘correct’ solution
Better yet, define your own theorem style using the
newtheoremstyle
macro as shown in theamsthm
documentation. To do this, just insert the following lines between lines 3 and 4 of the MWE, i.e. directly before you define yourthm
environment:newtheoremstyle{custom}% <name> {topsep}% <space above> {topsep}% <space below> {itshape}% <body font> {}% <indent amount> {bfseries}% <Theorem head font> {.}% <punctuation after theorem head> {newline}% <space after theorem head> (default .5em) {}% <Theorem head spec> theoremstyle{custom}
The newline is produced by setting the 8th argument (space after theorem head) to
newline
. The other parameters are the default settings of theplain
style ofamsthm
. Of course, you can customize those as well, if you want your theorems to look different.
answered Feb 27, 2013 at 10:48
bencarabellibencarabelli
1,3637 silver badges11 bronze badges
You must log in to answer this question.
Not the answer you’re looking for? Browse other questions tagged
.
Not the answer you’re looking for? Browse other questions tagged
.
The standard kernel’s newtheorem
is somehow too basic. I’d suggest you to use either amsthm
or ntheorem
(by far, the most popular packages to deal with theorem-like structures).
Here’s one way to achieve the desired formatting using a new theorem style defined using the amsthm
package (in comments it was requested to have the body in italics):
The code:
documentclass[10pt,a4paper]{article}
usepackage[T1]{fontenc}
usepackage{amsthm}
usepackage{textcomp}
newtheoremstyle{angularbreak}
{topsep}
{topsep}
{normalfontitshape}
{0pt}
{bfseries}
{}
{newline}
{thmname{#1}~thmnumber{#2}thmnote{ textlangle#3textrangle}}
theoremstyle{angularbreak}
newtheorem{mytheo}{Theorem}
begin{document}
begin{mytheo}[Fundamental Theorem of Algebra]
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod.
end{mytheo}
end{document}
If you decide to opt for ntheorem
:
documentclass[10pt,a4paper]{article}
usepackage[T1]{fontenc}
usepackage{ntheorem}
usepackage{textcomp}
makeatletter
newtheoremstyle{angularbreak}
{item[rlap{vbox{hbox{hskiplabelsep theorem@headerfont
##1 ##2theorem@separator}hbox{strut}}}]}%
{item[rlap{vbox{hbox{hskiplabelsep theorem@headerfont
##1 ##2 textlangle##3textrangletheorem@separator}hbox{strut}}}]}
makeatother
theoremstyle{angularbreak}
theorembodyfont{itshape}
newtheorem{mytheo}{Theorem}
begin{document}
begin{mytheo}[Fundamental Theorem of Algebra]
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod.
end{mytheo}
end{document}
And here’s the same idea using thmtools
as a front-end for amsthm
(now the user interface is more frindly):
documentclass[10pt,a4paper]{article}
usepackage[T1]{fontenc}
usepackage{amsthm}
usepackage{thmtools}
usepackage{textcomp}
declaretheoremstyle[
spaceabove=topsep,
spacebelow=topsep,
headfont=normalfontbfseries,
notefont=bfseries,
notebraces={textlangle}{textrangle},
bodyfont=normalfontitshape,
postheadspace=newline,
headpunct={},
]{angularbreak}
declaretheorem[style=angularbreak,name=Theorem]{mytheo}
begin{document}
begin{mytheo}[Fundamental Theorem of Algebra]
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod.
end{mytheo}
end{document}
The result:
Package amsmath
provides many environments for equations, e.g.:
gather
for centering equations by defaultalign
, which allows vertical alignments
Example:
documentclass{article}
usepackage{amsmath}
begin{document}
begin{gather}
S=sum_{i=1}^{8}A_i\
S=sum_{i=1}^{8}B_i\
S=sum_{i=1}^{8}C_i\
S=sum_{i=1}^{8}D_i
end{gather}
begin{align}
S &= sum_{i=1}^{8}A_i\
S &= sum_{i=1}^{8}B_i\
S &= sum_{i=1}^{8}C_i\
S &= sum_{i=1}^{8}D_i
end{align}
end{document}
Equation number in last line
documentclass{article}
usepackage{amsmath}
begin{document}
begin{gather}
nonumber S=sum_{i=1}^{8}A_i\
nonumber S=sum_{i=1}^{8}B_i\
nonumber S=sum_{i=1}^{8}C_i\
S=sum_{i=1}^{8}D_i
end{gather}
begin{align}
nonumber S &= sum_{i=1}^{8}A_i\
nonumber S &= sum_{i=1}^{8}B_i\
nonumber S &= sum_{i=1}^{8}C_i\
S &= sum_{i=1}^{8}D_i
end{align}
end{document}
Equation number in the middle
documentclass{article}
usepackage{amsmath}
begin{document}
begin{equation}
begin{gathered}
S=sum_{i=1}^{8}A_i\
S=sum_{i=1}^{8}B_i\
S=sum_{i=1}^{8}C_i\
S=sum_{i=1}^{8}D_i
end{gathered}
end{equation}
begin{equation}
begin{aligned}
S &= sum_{i=1}^{8}A_i\
S &= sum_{i=1}^{8}B_i\
S &= sum_{i=1}^{8}C_i\
S &= sum_{i=1}^{8}D_i
end{aligned}
end{equation}
end{document}
Addendum: sign function definition with cases
documentclass{article}
usepackage{amsmath}
usepackage{colonequals}
DeclareMathOperator{sgn}{sgn}
begin{document}
begin{equation}
sgn(x) colonequals
begin{cases}
-1 & text{if } x < 0 \
0 & text{if } x = 0 \
1 & text{if } x > 0
end{cases}
end{equation}
end{document}
Как можно использовать перенос строки в длинных уравнениях LaTeX?
Как добавить пробелы в подписи в Instagram – IG Line Generator
Мое уравнение очень длинное. Как мне заставить его продолжить на следующей строке, а не со страницы?
- Я бы спросил, действительно ли вы этого хотите. Многострочные уравнения будет очень трудно читать. Можно ли разбить уравнение на несколько (более коротких) уравнений?
- Используйте notag Проверьте соответствующие ответы здесь: tex.stackexchange.com/questions/74819/…
Если ваше уравнение не умещается в одной строке, тогда multline среда, вероятно, это то, что вам нужно
Если вам также нужно некоторое выравнивание относительно первой части, вы можете использовать split :
Обе среды требуют amsmath пакет.
Смотрите также aligned как указано в ответе ниже.
- По моему опыту, внутри многострочных сред с уравнениями не может быть новой строки.
Не настраивая математическую среду для обрезки, вы можете принудительно создать новую строку с двумя обратными косыми чертами в такой последовательности:
Проблема в том, что вам нужно будет определить, где может закончиться линия, и заставить всегда иметь там разрыв строки. С уравнениями, а не с текстом, я предпочитаю этот ручной способ.
Вы также можете использовать \* чтобы предотвратить запуск новой страницы.
Есть несколько способов справиться с этим. Во-первых, и, возможно, лучше всего, это переработать ваше уравнение, чтобы оно не было таким длинным; если он такой длинный, скорее всего, он будет нечитаемым.
Если это так, посмотрите Краткое руководство по математике AMS, чтобы узнать, как с этим справиться. (на второй странице)
Лично я бы использовал среду align, чтобы можно было точно контролировать разрыв и выравнивание. например
который выровнял бы первые знаки плюс каждой строки . но, очевидно, вы можете установить выравнивание где угодно.
- Для чего хороша среда align * по сравнению со средой align (с или без звездочки)?
- 1 звездочка указывает на то, что числа в строках уравнения следует опускать.
Еще не упомянуто здесь, другой выбор – окружающая среда aligned , снова из пакета amsmath :
Думаю, я обычно использовал eqnarray или что-то в этом роде. Это позволяет вам сказать
и оно будет выровнено с помощью & & . Как уже упоминалось, его трудно читать, но когда у вас есть такое длинное уравнение, его будет трудно читать, несмотря ни на что . (* делает это не иметь номера уравнения, IIRC)
- 3 ф.г.и. AMS рекомендует не использовать среды eqnarray, потому что они «создают несогласованный интервал между знаками равенства и не предпринимают попыток предотвратить наложение текста уравнения и номера уравнения». – здесь не совсем применимо, но полезно знать; Старая добрая среда может позаботиться о большинстве таких обстоятельств.
- Есть ли способ превратить это одно число в уравнение? Если я вставлю этикетку, я могу ссылаться на нее по номеру, но она не напечатана в правой части уравнения.
Я использовал begin
Это сработало для меня при использовании mathtools пакет.
- Наиболее полный ответ и действительно работает. Ткс!
multline лучше всего использовать. Вместо этого вы можете использовать dmath , split также.
Использовать eqnarray а также nonumber
ПРОСТОЙ ОТВЕТ ЗДЕСЬ
- Это то, что сработало для меня лучше всего. Функция была ключевой.
Чтобы решить эту проблему, я использовал среду массива внутри среды уравнений следующим образом:
Математические окружения
Рассмотрим блочные математические окружения для работы с одним или несколькими уравнениями.
С первым окружением для отображения одного математического выражения без нумерации мы уже знакомы — это конструкция [ … ] . Для использования нумерации при отображении одного выражения используется окружение equation.
Как было указано ранее, внутри уравнения можно поместить метку label <метка>, с тем, чтобы в дальнейшем можно было сослаться на уравнения используя ref <метка>или eqref <метка>(последняя команда подключается пакетом amsmath и печатает номер уравнения в круглых скобках).
Отметим, что окружение equation, как и все последующие окружения, поддерживают «звездную» версию, отключающую нумерацию текущего математического выражения.
Код | Отображение |
---|---|
Окружение equation печатает математическое выражение в одну строку. Если выражение слишком длинное и выходит за поля, то разбить это выражение можно в окружении multline. Разбиение производится командой новой строки \ , при этом первая строка выравнивается по левому краю, последняя строка выравнивается по правому краю, а промежуточные строки (если имеются) выравниваются по центру.
Код | Отображение |
---|---|
Отметим, что в англоязычной литературе, обычно математические операторы переносятся на новую строку без дублирования на старой.
Место, где стоит перенос имеет значение с позиции восприятия математического выражения. По возможности стараются в первую очередь перенести знак равенства, затем переносятся знаки плюс и минус, последним переносятся знаки умножения и деления. Переносы в других местах стараются избегать.
Для отображения нескольких математических выражений, например, системы уравнений, существует несколько окружений.
Первое окружение align является стандартным. Для разделения строк используется команда \ , а выравнивание осуществляется по символу амперсанд & .
Код | Отображение |
---|---|
В многострочных окружениях нумеруется каждая строка. Если вы хотите сослаться на каждое уравнение, то необходимо поставить метку для каждой строки. Если вы хотите запретить нумерацию строки (например, уравнение занимает две строки и пронумерована должна быть только одна строка), то используйте команду запрета нумерации текущей строки nonumber .
Больше возможностей для выравнивания предоставляет окружение eqnarray , поскольку поддерживает два символа выравнивания в одной строке. Данное окружение делает больший отступ на символах выравнивания, чем предыдущее окружения align.
Код | Отображение |
---|---|
В данном примере первое выравнивание использовано для знака равенства, второе выравнивание для переноса внутри уравнения. Третье уравнение разбито на три строки, поэтому в первых двух строках с переносами нумерация уравнения отключена.
Как предотвратить перенос части формулы на другую строку
LaTeX может самостоятельно разбить и перенести математическую формулу на другую строку, если встретит в ней бинарный оператор или символ отношений. Такое поведение не всегда желательно, тем более что LaTeX переносит формулы «по-английски», т. е. символ отношения не повторяется на следующей строке, как это принято в отечественной традиции.
Простейший способ отменить ненужный перенос — окружить «непереносимую» часть формулы фигурными скобками: $$ выводит ту же формулу, что и $a+b$ , но без возможности разрыва группы, заключенной в фигурные скобки.
Скорее всего, после этого неразрывная формула будет выходить за границы строки. Поэтому перед ней нужно разорвать строку вручную, при помощи linebreak .
Более продвинутое, но и более сложное, решение этой задачи описано здесь.
Читайте также
Комментарии
Дмитрий Храмов
Компьютерное моделирование и все, что с ним связано: сбор данных, их анализ, разработка математических моделей, софт для моделирования, визуализации и оформления публикаций. Ну и за жизнь немного.
источники:
http://fsweb.info/latex/math_environment.html
http://dkhramov.dp.ua/Comp.PreventLineBreaking
Есть формула
begin{equation*}
max_X (min_{vec{Y}} F(X, vec{Y})) = sup_{X} (inf_{vec{Y}} F(X, vec{Y})) = Gamma_1, newline
min_{vec{Y}} (max_X F(X, vec{Y})) = inf_{vec{Y}} (sup_{X} F(X, vec{Y})) = Gamma_2
end{equation*}
Как перенсти на новую строку? \
не работает.
задан 21 сен 2015 в 16:53
hedgehogueshedgehogues
9,3117 золотых знаков43 серебряных знака88 бронзовых знаков
Equation используется для выражений, которые занимают 1 строку, для многострочных выражений обычно используют окружение multline*, попробуйте его.
ответ дан 21 сен 2015 в 17:09
merlettamerletta
4735 серебряных знаков11 бронзовых знаков
Synopsis:
begin{theorem} theorem body end{theorem}
Produces ‘Theorem n‘ выделено жирным шрифтом, а theorem body выделено курсивом. Возможности нумерации для n описаны в разделе newtheorem
(см. newtheorem
).
newtheorem{lem}{Lemma} % in preamble newtheorem{thm}{Theorem} ... begin{lem} % in document body text of lemma end{lem} The next result follows immediately. begin{thm}[Gauss] % put `Gauss' in parens after theorem head text of theorem end{thm}
В большинстве новых документов используются пакеты amsthm
и amsmath
от Американского математического общества. Среди прочего, эти пакеты включают в себя большое количество опций для сред теорем, таких как опции стилей.