Latex теорема с новой строки

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's user avatar

lockstep

244k69 gold badges709 silver badges780 bronze badges

asked Feb 27, 2013 at 9:34

goblin GONE's user avatar

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.

  1. 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.

  2. The ‘correct’ solution

    Better yet, define your own theorem style using the newtheoremstyle macro as shown in the amsthm documentation. To do this, just insert the following lines between lines 3 and 4 of the MWE, i.e. directly before you define your thm 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 the plain style of amsthm. Of course, you can customize those as well, if you want your theorems to look different.

answered Feb 27, 2013 at 10:48

bencarabelli's user avatar

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

.

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):

enter image description here

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:

enter image description here

Package amsmath provides many environments for equations, e.g.:

  • gather for centering equations by default
  • align, 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}

Result

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}

Result equation number in last line

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}

Result equation number in the middle

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}

Result sgn function

Как можно использовать перенос строки в длинных уравнениях 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

hedgehogues's user avatar

hedgehogueshedgehogues

9,3117 золотых знаков43 серебряных знака88 бронзовых знаков

Equation используется для выражений, которые занимают 1 строку, для многострочных выражений обычно используют окружение multline*, попробуйте его.

ответ дан 21 сен 2015 в 17:09

merletta's user avatar

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 от Американского математического общества. Среди прочего, эти пакеты включают в себя большое количество опций для сред теорем, таких как опции стилей.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *