涉及到的命令
命令 | 功能 | 示例代码 | 示例效果 |
---|---|---|---|
\overbrace{公式}^{标注} \underbrace{公式}_{标注} |
给公式上方或下方 添加花括号并加上标注 |
\[ \overbrace{a + b} ^ \text{用花括号括起 a + b a + b a+b} \] \[ \underbrace{a + b} ^ \text{用花括号括起 a + b a + b a+b} \] |
|
\overbracket{公式}^{标注} \underbracket{公式}_{标注} (前提:需载入mathtools宏包) |
给公式上方或下方 添加方括号并加上标注 |
\[ \overbracket{a + b} ^ \text{用方括号括起 a + b a + b a+b} \] \[ \underbracket{a + b} ^ \text{用方括号括起 a + b a + b a+b} \] |
|
\llap{一段文字} | 设同一行中\llap之前的所有内容为字段A, \llap参数里的文字为字段B。 \llap命令将B与A进行重合,并保持A和B右端对齐。 |
\section{\textbackslash rlap效果演示} \noindent 长文字 \textbackslash llap{短文字}的效果:\\ 保护环境,人人有责 \llap{Great}\\ 短文字 \textbackslash llap{长文字}的效果:\\ 你我他 \llap{保护环境,人人有责} |
|
\rlap{一段文字} | 设同一行中\rlap之后的所有内容为字段A, \llap参数里的文字为字段B。 \llap命令将B与A进行重合,并保持A和B左端对齐。 |
\section{\textbackslash rlap效果展示} \noindent \textbackslash rlap{长文字}短文字的效果:\\ \rlap{保护环境,人人有责}你我他\\ \textbackslash rlap{短文字}长文字的效果:\\ \rlap{Great}保护环境,人人有责 |
|
\phantom{字段} | 空出和参数里的字段一样长的距离(是实体的) | \noindent 我要空出“我ai你”的距离。\\ 开始\phantom{我ai你}结束。 |
两点注意
1.在数学模式中使用\phantom,该命令的参数内容仍会停留在数学模式,此时参数内容两边不用加$…$来使参数内容进入行内公式模式。
示例:
%-*- coding: UTF-8 -*-
\documentclass[UTF8]{ctexart}
\usepackage{amsmath}
\begin{document}
\section{展示$|xa+by|$}
\noindent 正常的展示效果:
\[
|xa+by|
\]
将$a+b$ phantom化:
\[
|x\phantom{a+b}y|
\]
利用\textbackslash text\{\ \}将$a+b$变为文本模式:
\[
|x\text{a+b}y|
\]
\end{document}
2.在数学模式中使用\llap或者\rlap,该命令的参数内容默认会跳出数学模式回到文本模式,此时若参数内容是一个数学表达式,则需要在其两端加入$…$来重新进入(行内)数学模式。
示例:
%-*- coding: UTF-8 -*-
\documentclass[UTF8]{ctexart}
\usepackage{amsmath}
\begin{document}
\section{不在参数两端加\$\dots\$}
\[
\rlap{a+b}
\]
\[
\llap{a+b}
\]
\section{在参数两端加\$\dots\$}
\[
\rlap{$a+b$}
\]
\[
\llap{$a+b$}
\]
\end{document}
实现思路
以下面的公式为例。
整体思路是运用重叠技巧。这里以右重叠命令 \rlap 为例说明具体思路。
1.运用右重叠时,需要先对公式进行拆解。可以先将公式中的上花括号单独分成一个部分A,剩下的部分归为另一个整体B。
整体B的代码是显然的:
\[
a \to \underbrace{b \to c}
\]
2.而对于部分A,由于\overbrace命令的语法限制其只能在现有内容上方括起花括号,而无法凭空生成一个花括号,因此我们可以给一段空白的,透明的,与 a → b a \to b a→b等长的实体C上方括上花括号。部分A与实体C一起构成整体D。
3.然后用\rlap{D}B将整体D右重叠至整体B中,且由于刚才创造的实体C是空白透明的,不会对整体B造成遮挡。至此公式编辑完毕。
思路图示如下:
整体代码如下:
%-*- coding: UTF-8 -*-
\documentclass[UTF8]{ctexart}
\usepackage{amsmath}
\begin{document}
\section{\textbackslash rlap参数两端不加\$\dots\$}
\[
\rlap{\overbrace{\phantom{a \to b}}} a \to \underbrace{b \to c}
\]
\section{\textbackslash rlap参数两端加\$\dots\$}
\[
\rlap{$\overbrace{\phantom{a \to b}}$} a \to \underbrace{b \to c}
\]
\end{document}
效果图如下:
交错括号在不同侧(各在上下侧)
我们推荐先忽略掉所有的括号,在数学模式中编写完剩余的内容后,再在其中寻找断点,利用命令\llap(或\rlap)和\phantom来进行重叠操作,给目标内容的上方或下方括上括号(并作标注)。
示例:
%-*- coding: UTF-8 -*-
\documentclass[UTF8]{ctexart}
\usepackage{amsmath}
\begin{document}
\section{第一步}
\[
a \to b \to c \to d \to e \to f \to g
\]
\section{第二步}
\[
a \to b \to c \to d
\llap{$\overbrace{\phantom{b \to c \to d}}^{\text{第1个花括号}}$}
\to e \to f \to g
\]
\section{第三步}
\[
a \to b \to c \to d
\llap{$\overbrace{\phantom{b \to c \to d}}^{\text{第1个花括号}}$}
\to e
\llap{$\underbrace{\phantom{c \to d \to e}}_{\text{第2个花括号}}$}
\to f \to g
\]
\section{第四步}
\[
a \to b \to c \to d
\llap{$\overbrace{\phantom{b \to c \to d}}^{\text{第1个花括号}}$}
\to e
\llap{$\underbrace{\phantom{c \to d \to e}}_{\text{第2个花括号}}$}
\to f \to g
\llap{$\overbrace{\phantom{d \to e \to f}}^{\text{第3个花括号}}$}
\]
\end{document}
效果如下:
交错括号在同一侧(同为上侧或同为下侧)
交错括号在同一侧时,为了尽可能减少同侧括号出现重叠,一般要调整括号的线宽和伸出高度。Latex自带的\overbrace, \underbrace命令没有可选参数来调整线宽和伸出高度,因此我们采用mathtools宏包中的\overbracket, \underbracket产生可调整线宽和伸出长度的方括号。
一般地,\overbracket, \underbracket的语法为:
\overbracket[线宽][伸出高度]{内容}^{标注}
\underbracket[线宽][伸出高度]{内容}_{标注}
交错括号的实现思想同上一节 交错括号在不同侧(各在上下侧).
示例:
%-*- coding: UTF-8 -*-
\documentclass[UTF8]{ctexart}
\usepackage{amsmath}
\usepackage{mathtools}
\begin{document}
\section{第一步}
\[
a \to b \to c \to d \to e \to f \to g
\]
\section{第二步}
\[
a \to b \to c
\llap{$\overbracket[0.01cm]{\phantom{b \to c}}^{\text{第1个方括号}}$}
\to d \to e \to f \to g
\]
\section{第三步}
\[
a \to b \to c
\llap{$\overbracket[0.01cm]{\phantom{b \to c}}^{\text{第1个方括号}}$}
\to d \to e
\llap{$\overbracket[0.01cm][0.5cm]{\phantom{b \to c \to d \to e}}^{\text{第2个方括号}}$}
\to f \to g
\]
\section{第四步}
\[
a \to b \to c
\llap{$\overbracket[0.01cm]{\phantom{b \to c}}^{\text{第1个方括号}}$}
\to d \to e
\llap{$\overbracket[0.01cm][0.5cm]{\phantom{b \to c \to d \to e}}^{\text{第2个方括号}}$}
\to f \to g
\llap{$\overbracket[0.01cm][1cm]{\phantom{c \to d \to e \to f \to g}}^{\text{第3个方括号}}$}
\]
\end{document}