与问题(和接受的答案)相关我想要一个非常小的下支架,其中使用以下代码来定义新\smallunderbrace
命令:
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\def\smallunderbrace#1{\mathop{\vtop{\m@th\ialign{##\crcr
$\hfil\displaystyle{#1}\hfil$\crcr
\noalign{\kern3\p@\nointerlineskip}%
\tiny\upbracefill\crcr\noalign{\kern3\p@}}}}\limits}
\makeatother
\newcommand{\clap}[1]{\makebox[0pt]{#1}}
\begin{document}
\begin{gather}
(du) \\
(\smallunderbrace{du}_{\text{\clap{label}}}) \\
(\smallunderbrace{\text{test}}_{\text{\clap{label}}})
\end{gather}
\end{document}
答案(由保罗·盖斯勒) 指出该\smallunderbrace
命令与基础 LaTeX 中的命令相同,\underbrace
只是\tiny
在最后一行插入了命令。
有人可以解释一下我该如何调整它来定义一个非常小的过度支撑吗?
答案1
\tiny
通过类似地在 =)的定义中添加 a \overbrace
。
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\def\smalloverbrace#1{\mathop{\vbox{\m@th\ialign{##\crcr\noalign{\kern3\p@}%
\tiny\downbracefill\crcr\noalign{\kern3\p@\nointerlineskip}%
$\hfil\displaystyle{#1}\hfil$\crcr}}}\limits}
\makeatother
\newcommand{\clap}[1]{\makebox[0pt]{#1}}
\begin{document}
\begin{gather}
(du) \\
(\smalloverbrace{du}^{\text{\clap{label}}}) \\
(\smalloverbrace{\text{test}}^{\text{\clap{label}}})
\end{gather}
\end{document}
PS 至少有五种方法可以找出宏的定义方式。(有点像教人如何钓鱼。)
1. 使用 (la)texdef
我不知道您是否是终端用户,但如果是,这是一个很好的选择。(我认为它也可以在 Windows 上的命令提示符下使用。有人可以证实这一点吗?)
在终端窗口中,输入latexdef <macro name>
(不带斜线),因此在本例中就是这个。这将向您展示宏是如何定义的。如果您想知道加载某些包或类时的定义,您可以分别使用标志和latexdef overbrace
来告诉 latexdef 。-p [<options]<package>
-c [<options>]<class>
以下是一个例子:
latexdef -c book -p amsmath -p [draft]hyperref chapter
(amsmath
,并且hyperref
实际上并没有改变的定义\chapter
,但我无法立即想到一个很好的例子。)
有关更多信息latexdef
,请键入latexdef -h
或参阅文档这里。您可能需要使用texdef -t latex
而不是latexdef
。
2. 使用\show
在文档的某处添加以下代码:
\show\overbrace
现在运行 LaTeX 时,它会停下来向您显示 的定义\overbrace
。如果您在非停止模式下运行,您还可以检查输出或 .log 文件。
3. 通过使用\meaning
在文档的某处添加以下内容:
\texttt{\meaning\overbrace}
这会将 的定义\overbrace
放在您的文档中。如果没有 ,它会看起来很糟糕,\texttt
因为反斜杠排版不正确(除非您使用fontenc
)。
4. 通过查看文档
如果您知道宏定义的包或类,则可以查看文档。要快速查看与 TeX 相关的文档,您可以使用 texdoc:texdoc <query>
在终端中输入或使用texdoc.net。示例:(texdoc texdef
不起作用texdoc latexdef
)、、texdoc hyperref
或texdoc symbols-a4
)texdoc texdoc
。
文档通常(但并非总是)包含源代码。要找出宏定义的位置,您可以将标志添加-f
到latexdef
(来自方法 1)。有关 LaTeX 源代码的文档,请搜索source2e
。
5. 通过查找相关包/类的 .sty/.cls 文件
如果您知道宏定义在哪个包或类中,则可以直接查看源代码。如果嵌套了许多定义,这种方法会更快,而且也很有用,因为长定义的原始代码通常分布在多行中并缩进(有时包括注释)。
要找出宏定义的位置,您可以将标志添加-f
到latexdef
(来自方法 1)。如果latexdef
说宏是由 LaTeX 定义的,那么它可能可以在 latex.ltx、fontmath.ltx 或同一目录中的其他文件之一中找到。所有这些文件的位置可能取决于您的 TeX 发行版和/或操作系统。要找出特定文件的位置,您可以键入kpsewhich <filename.sty/cls>
或kpsewhich <latex.ltx/fontmath.ltx>
(再次在终端中)。(我再次认为这也应该适用于 Windows,但我不确定。)