В этом посте я хочу рассказать в двух словах о том, как пистать формулы на кодфорсесе так, чтобы они выглядели формулами. По сути это краткое введение в начала языка разметки , который и используется на Codeforces. Оно будет полезно тем, кто совсем не знает, как писать формулы и почти любому, у кого нет об этом систематических знаний.
Три важных правила
Самое главное правило: формула заключается в доллары ($
), как в скобки.
Ещё одно важное правило: если вы хотите, чтобы некоторая операция была применена к целой группе символов, эту группу надо оформить в блок с помощью фигруных скобок. Например, если написать 2^x+y
, получится 2x + y. Чтобы получить 2x + y, надо заключить показатель степени в блок: 2^{x+y}
Третье правило — для перфекционистов. Для экономии траффика Codeforces печатает простые формулы, в которых ничего особенного нет, обычным текстом. Иногда это получается не очень красиво C_{x_i+y_i-2}^{x_i-1}
= Cxi + yi - 2xi - 1. Если вы напечатали формулу и вам не понравилось, как Codeforces её интерпретировал, можно в начале формулы добавить команду \relax
. Тогда формула будет гарантированно красивой, в ущерб траффику: \relax C_{x_i+y_i-2}^{x_i-1}
= .
Арифметические операции.
Сложение и вычитание пишутся обычными знаками + и -. Что касается умножения, то обычно оно в математике обозначается либо просто пустым символом (xy — это произведение чисел x и y). Также есть символ (\cdot
). Если же надо перемножить два сложных выражения (), или важны оба сомножителя, а не только величина произведения (в выражениях вида поле ), используется символ × , который может быть получен командой \times
.
С делением всё несколько сложнее. Обычно в математике деление не пишется в одну строчку, однако желание не городить дроби на ровном месте тоже вполне понятно. В таком случае всегда можно написать :
или /
(x:y
, x/y
). Если же вы хотите всё же написать дробь, на это есть две похожие команды: \frac
и \dfrac
. После любой из этих команд надо написать блок числителя и блок знаменателя, например: (\frac{1}{4}
). С использованием \frac
дроби получаются маленькие, что подходит, в основном, для самых простых дробей. Если вы хотите написать большую серьёзную дробь, вам потребуется \dfrac
: (\dfrac{x+y}{x^2+y^2}
). В принципе, если числитель или знаменатель односимвольный, можно его не заключать в скобки, например: (\frac14x
), но только если числитель не является буквой.
Верхние и нижние индексы.
Если вы хотите написать нижний индекс, вам поможет символ _
, а верхний индекс (в основном это бывает показатель степени), то символ ^
: (xi + yi)2 ((x_i+y_i)^2
). Так же, как и с дробями, в нижний или верхний индекс можно поместить блок, но если индекс односимвольный, то можно этого не делать.
Разные полезные спецсимволы и советы
Текст — текст (---
) — не в формулах, а в тексте. Это тире, а не дефис (не работает, если нет окружающего текста)
(\dots
) — среднее многоточие для формул в англоязычных текстах.
(\ldots
) — нижнее многоточие для формул в русскоязычных текстах.
∞ (\infty
) — символ бесконечности.
(\in
) и (\ni
) — символы принадлежности к множеству.
→ (\to
) — стрелочка направо, в выражениях типа xn → 0.
Многие известные математичские функции можно набирать с \
, тогда они будут выглядеть, как формулы, а не просто как текст ( = \tg
, = \ln
, = \lim
и так далее)
Если вы хотите, чтобы индексы были сверхи и снизу, а не сверху-справа и снизу-справа, используйте команду \limits
:
= \sum_{k = 0}^nx^k
= \sum\limits_{k = 0}^nx^k
.
Если вокруг большого выражения маленькие скобки, можно их сделать подходящего размера, написав перед левой скобочкой команду \left
, а перед правой — команду \right
. Например: = \left( \dfrac{x+y}{x^2+y^2} \right)
.
Спасибо за внимание!
Чтобы формула получилась красивой, ей нужно сначала расслабиться/отдохнуть :D
Блог — не блог, без твоего комментария))
А в чем разница между
\dots
и\ldots
?Похоже, я ошибся, между ними нет существенной разницы. Спасибо.
Нет, всё-таки есть, она вот такая:
(
\dots
)(
\ldots
)Просто когда формула получается текстом, а не картинкой, Codeforces в любом случае вставляет нижнее троеточие.
На самом деле есть
\ldots
(lower dots) и\cdots
(center dots), а есть\dots
, который по контексту выбирает одно из них.\dots
\ldots
\cdots
Здорово, не знал!
Но всё равно, насколько я знаю, в русскоязычных мат.текстах принято во всех случаях использовать
\ldots
.Здесь можно найти ещё некоторые фишки и наиболее часто используемые символы.
На экране с 72 dpi — да. На чем-то с повышенным разрешением получится помойка (см. cкрин с MacBook Pro).
Оффтоп, но да, качество картинок низкое. Ну тут уж я ничего не могу посоветовать.
Просто MacBook Pro — помойка)))
Коллега, вы не толерантны к целевой аудитории макбуков)
Судя по оценкам наших с тобой комментариев, на КФ полным-полно латентных яблочников.
А лично я полностью разделяю твое мнение (особенно после того, как сам поработал с маком достаточно продолжительное время).
да какой там макбук, даже на экране со 100 ppi не айс выглядит
Да эти формулы на любом экране выглядят размыто. Нормальным решением было бы использование MathML или MathJax.
Напиши про системы уравнений и как их выравнивать, я вот не умею толком это делать, а иногда хочется.
Например, так:
Можно сделать на более низком уровне и добавить веселья (обращаю внимание, что расстояние между столбцами уравнений больше, чем между символами в уравнении):
А чтобы не ставить никакую скобочку справа, используется
\right.
X × Y x·y
I find this very useful. Thank a lot, will start using it.
Thanks for your post! Here are a few more notes:
To get a binomial coefficient (the number of ways to choose k objects out of n total), you can write
\binom{numerator}{denominator}
.You can put an equation on its own line by separating two dollar signs with line breaks:
which yields
Add
\displaystyle
at the beginning to make things look nicer.AoPS has a nice latex guide here (helpful sections are symbols and commands).
Thanks a lot, add another one "signed area of triangle" A is stand for the signed area of a triangle,
(2A=
\begin{vmatrix}
x_0 & y_0 & 1 \
x_1 & y_1 & 1 \
x_2 & y_2 & 1 \
\end{vmatrix}
=x_0y_1+x_2y_0+x_1y_2-x_2y_1-x_0y_2-x_1y_0
) btw:two dollar signs are Omitted
for more useful tips of LaTeX, this website may help
http://meta.math.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference
Подскажите пожалуйста, как сделать шрифт в формате, в котором в задачах обычно помечаются "YES"/"NO"? При использовании /mathtt, /tt, /text и прочих, текст просто жирнится и размывается..
× has a different purpose from scalar multiplication. For example, cross product, or Cartesian product N × M. And, of course, * has a different purpose again; typically, it's a superscript or denotes convolution.
You can always use parentheses and common · for scalar multiplication, regardless how complex the expressions are.
\relax C_{x_i+y_i-2}^{x_i-1}
3123
Nice blog, please add the symbol "$$$\in$$$" its
\in
.Also why this blog has too few comments?
Thank you, $$$\in$$$ and $$$\ni$$$ has been added.
$$$\int\limits_{t=0}^{t=\infty}\mathbb{E}[X_t] dt $$$
You can go here to get more information https://katex.org/docs/supported.html
$2^x+y
Put the dollar symbol at the beginning and at the end of your formula.
how to change line while writing?
It's standard html so you could use break like br inside <>
($$$a+b$$$)
$$$O(N)$$$
$$$\mathcal{O}(N)$$$
O(N)
\dfrac{x+y}{x^2+y^2}