Блог пользователя Sammarize

Автор Sammarize, 9 лет назад, По-русски

В этом посте я хочу рассказать в двух словах о том, как пистать формулы на кодфорсесе так, чтобы они выглядели формулами. По сути это краткое введение в начала языка разметки , который и используется на 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).

Спасибо за внимание!

Теги tex
  • Проголосовать: нравится
  • +380
  • Проголосовать: не нравится

»
9 лет назад, # |
  Проголосовать: нравится -62 Проголосовать: не нравится

Чтобы формула получилась красивой, ей нужно сначала расслабиться/отдохнуть :D

  • »
    »
    9 лет назад, # ^ |
      Проголосовать: нравится +10 Проголосовать: не нравится

    Блог — не блог, без твоего комментария))

»
9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

А в чем разница между \dots и \ldots?

  • »
    »
    9 лет назад, # ^ |
      Проголосовать: нравится -8 Проголосовать: не нравится

    Похоже, я ошибся, между ними нет существенной разницы. Спасибо.

  • »
    »
    9 лет назад, # ^ |
      Проголосовать: нравится +13 Проголосовать: не нравится

    Нет, всё-таки есть, она вот такая:

    (\dots)

    (\ldots)

    Просто когда формула получается текстом, а не картинкой, Codeforces в любом случае вставляет нижнее троеточие.

    • »
      »
      »
      9 лет назад, # ^ |
        Проголосовать: нравится +12 Проголосовать: не нравится

      На самом деле есть \ldots (lower dots) и \cdots (center dots), а есть \dots, который по контексту выбирает одно из них.

      \dots \ldots \cdots
      • »
        »
        »
        »
        9 лет назад, # ^ |
          Проголосовать: нравится +8 Проголосовать: не нравится

        Здорово, не знал!

        Но всё равно, насколько я знаю, в русскоязычных мат.текстах принято во всех случаях использовать \ldots.

»
9 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

Здесь можно найти ещё некоторые фишки и наиболее часто используемые символы.

»
9 лет назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

Третье правило — для перфекционистов.

Тогда формула будет гарантированно красивой

На экране с 72 dpi — да. На чем-то с повышенным разрешением получится помойка (см. cкрин с MacBook Pro).

  • »
    »
    9 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Оффтоп, но да, качество картинок низкое. Ну тут уж я ничего не могу посоветовать.

  • »
    »
    9 лет назад, # ^ |
      Проголосовать: нравится +60 Проголосовать: не нравится

    Просто MacBook Pro — помойка)))

    • »
      »
      »
      9 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Коллега, вы не толерантны к целевой аудитории макбуков)

    • »
      »
      »
      9 лет назад, # ^ |
        Проголосовать: нравится 0 Проголосовать: не нравится

      Судя по оценкам наших с тобой комментариев, на КФ полным-полно латентных яблочников.

      А лично я полностью разделяю твое мнение (особенно после того, как сам поработал с маком достаточно продолжительное время).

  • »
    »
    9 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    да какой там макбук, даже на экране со 100 ppi не айс выглядит

  • »
    »
    9 лет назад, # ^ |
      Проголосовать: нравится +16 Проголосовать: не нравится

    Да эти формулы на любом экране выглядят размыто. Нормальным решением было бы использование MathML или MathJax.

»
9 лет назад, # |
  Проголосовать: нравится +21 Проголосовать: не нравится

Напиши про системы уравнений и как их выравнивать, я вот не умею толком это делать, а иногда хочется.

  • »
    »
    9 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +50 Проголосовать: не нравится

    Например, так:

    \begin{cases}
    x + y &= 23, \\
    2x &= 456 \\
    \end{cases}
    

    Можно сделать на более низком уровне и добавить веселья (обращаю внимание, что расстояние между столбцами уравнений больше, чем между символами в уравнении):

    \left[
    \begin{aligned}
    x+y &= 20 & a &= 40 \\
    y &= 10 + 40 & c &= 10^9
    \end{aligned}
    \right\}
    

    • »
      »
      »
      9 лет назад, # ^ |
        Проголосовать: нравится +42 Проголосовать: не нравится

      А чтобы не ставить никакую скобочку справа, используется \right.

»
9 лет назад, # |
Rev. 12   Проголосовать: нравится 0 Проголосовать: не нравится

X × Y x·y

»
9 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится

I find this very useful. Thank a lot, will start using it.

»
9 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится

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:

[two dollar signs]
equation
[two dollar signs]

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

»
9 лет назад, # |
Rev. 3   Проголосовать: нравится +3 Проголосовать: не нравится

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

»
7 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Подскажите пожалуйста, как сделать шрифт в формате, в котором в задачах обычно помечаются "YES"/"NO"? При использовании /mathtt, /tt, /text и прочих, текст просто жирнится и размывается..

»
6 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

»
6 лет назад, # |
  Проголосовать: нравится +8 Проголосовать: не нравится

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

»
6 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

\relax C_{x_i+y_i-2}^{x_i-1}

»
6 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

»
5 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

3123

»
4 года назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

Nice blog, please add the symbol "$$$\in$$$" its \in.

Also why this blog has too few comments?

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

$$$\int\limits_{t=0}^{t=\infty}\mathbb{E}[X_t] dt $$$

»
4 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

You can go here to get more information https://katex.org/docs/supported.html

»
3 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

$2^x+y

»
3 года назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

how to change line while writing?

»
3 года назад, # |
  Проголосовать: нравится -22 Проголосовать: не нравится

($$$a+b$$$)

»
2 месяца назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

$$$O(N)$$$