跳转至

基础知识

编辑环境

本人推荐使用 Atom/VSCode + Markdown Preview Enhanced 插件。

当然,使用洛谷自带的剪贴板也不是不可以。

基础命令

注意

本章所出现的:

  • offset 参数,除特殊说明,均可以为负。

  • 用于输出的 text 参数,除特殊说明,均表示会以文本模式输出,相对应的的,source 表示会以数学模式输出

\rule

\rule[offset]{w}{h}

在当前位置上方 offset 处绘制一个长宽为 wh 的矩形。

提示

  • 如果指定的 offset 超出了当前块的范围,则会使当前块的高度改变以容纳绘制的矩形,而不是穿插到其他块。
  • 绘制的矩形会挡住同一层的文字,使用像 \raisebox, \cancel, \underline 之类的命令或在另一个块输出可以解决。
  • 洛谷渲染出来有时会丢失一些边角像素。(原因未知)
示例

\rule{10pt}{6pt}\quad
\rule[5pt]{10pt}{6pt}\quad
\rule[-10pt]{10pt}{6pt}\quad
\rule[10pt]{10pt}{6pt}\quad
\color{green}\rule{50pt}{10pt}\kern{-10pt}\color{red}aaa %文字被挡住了

$ \rule{10pt}{6pt}\quad \rule[5pt]{10pt}{6pt}\quad \rule[-10pt]{10pt}{6pt}\quad \rule[10pt]{10pt}{6pt}\quad \color{green}\rule{50pt}{10pt}\kern{-10pt}\color{red}aaa %文字被挡住了 $

\raisebox

\raisebox{offset}{text}

将文本 text 的输出上移 offest

提示

  • \rule 一样不会穿插到其他块。
示例

text $\raisebox{10pt}{text}$

$$\sin\raisebox{5pt}{$\tan$}\cos$$

text \(\raisebox{10pt}{text}\)

\[\sin\raisebox{5pt}{$\tan$}\cos\]

\kern

\kern{offset}

输出大小为 offset 的间距。(可用于水平移动当前位置)

示例

a \kern{20pt} b\newline
a \kern{-15pt} b\kern{15pt}

$ a \kern{20pt} b\newline a \kern{-15pt} b\kern{15pt} $

\\

\\[offset]

输出竖直间距。或者说:先进行换行,再在竖直方向上移动 offset 距离。

警告

\cr\newline 将不再能使用该参数。 参见 KaTeX Doc #newline-and-cr

提示

回到开头是指当前段落开头,而不是块的开头。

示例

$a\\[0pt]bcd\\[-20pt]efghij$

$averyveryverylonglonglongsentence....\\[-13pt]\color{blue}\tt{cameback}$

aaa $bb\\c$

\(a\\[0pt]bcd\\[-20pt]efghij\)

\(averyveryverylonglonglongsentence....\\[-13pt]\color{blue}\tt{cameback}\)

aaa \(bb\\c\)

\cancel 系列

\cancel{text} / \bcancel{text} / \xcancel{text}

给文字 text 画斜线。

提示

  • 内容高度 < 0.17 pt 不会显示
  • 内容宽度 < 4 pt 时显示宽度会变成 4 pt
  • 斜线宽度会略多于文字宽度,需要微调才能绘制的比较精准

    【对于非讨论区】每种字体所对应的两边多出的宽度(单位pt):

    字体大小 大小 字体大小 大小
    normal 2 large 2.4
    tiny 1 Large 2.8
    script 1.4 LARGE 3.5
    footnote 1.6 huge 4
    small 1.8 Huge 5

\(\cancel{cancel}\quad\bcancel{bcancel}\quad\xcancel{xcancel}\)

\cancel{cancel}\quad\bcancel{bcancel}\quad\xcancel{xcancel}

当把文字换成透明的矩形时,就可以用来画斜线了:

$ \def\xcline#1#2{ \kern{2pt} \cancel{\phantom{\rule{#1}{#2}}\kern{-4pt}} \kern{2pt} } \def\xbcline#1#2{ \kern{2pt} \bcancel{\phantom{\rule{#1}{#2}}\kern{-4pt}} \kern{2pt} } \xcline{10pt}{10pt} \xbcline{10pt}{10pt} \xcline{10pt}{20pt} $

\def\xcline#1#2{
    \kern{2pt}
    \cancel{\phantom{\rule{#1}{#2}}\kern{-4pt}}
    \kern{2pt}
}
\def\xbcline#1#2{
    \kern{2pt}
    \bcancel{\phantom{\rule{#1}{#2}}\kern{-4pt}}
    \kern{2pt}
}
\xcline{10pt}{10pt}
\xbcline{10pt}{10pt}
\xcline{10pt}{20pt}

复杂示例

\mathlap 系列

\mathllap{source} / \mathclap{source} / \mathrlap{source}

用于消除字符的碰撞体积,以减少公式输出时的不必要空白。 其中 llap,rlap,clap 分别对应着向左排版(右对齐)、向右排版(左对齐)、居中对齐。

$ S = \sum\limits_{1\le i\le j\le n} a_{ij}\quad S = \sum\limits_{\mathclap{1\le i\le j\le n}} a_{ij} $

S = \sum\limits_{1\le i\le j\le n} a_{ij}\quad
S = \sum\limits_{\mathclap{1\le i\le j\le n}} a_{ij}

对于绘制来说,这个命令可以用于消除绘制内容的碰撞箱。

这是相当有用的,例如你的绘制宏使用一串文字作为参数,在某处要输出文字后回到开头,因为是参数,你无法知道具体的宽度,这意味着你无法使用 \kern,但你只需要使用 \mathrlap 就可以了。

强行转换 math 模式

行间模式

$...$ 将公式包裹起来

行内模式

讨论区暂无解决方法。 非讨论区可使用 \boxed 解除限制。

\(\text{\color{transparent}\boxed{\color{black}xxxx}}\) \text{\color{transparent}\boxed{xxxx}}

提示

\boxed 限制:

  • 内容宽度 小于两边多出宽度之和 时碰撞箱会变成 两边多出宽度之和

    每种字体所对应的两边多出的宽度(单位pt):

    字体大小 大小 字体大小 大小
    normal 2.99 large 3.6
    tiny 1.49 Large 4.31
    script 2.1 LARGE 5.18
    footnote 2.4 huge 6.43
    small 2.7 Huge 7.46