如何在导言区设置`\abovedisplayskip`?

2019-10-15 21:03发布

想实现`\setlength{\abovedisplayskip}{0pt}`,在导言区写是不生效的,只有在正文区写`\setlength{\abovedisplayskip}{0pt}`才有用,那么...

想实现`\setlength{\abovedisplayskip}{0pt}`,在导言区写是不生效的,只有在正文区写`\setlength{\abovedisplayskip}{0pt}`才有用,那么如何才能在导言区设置`\abovedisplayskip`? 尝试了用`etoolbox`宏包,没有效果 ```tex \documentclass{ctexart} \usepackage{amsmath} \usepackage{etoolbox} \AtBeginEnvironment{document}{ \setlength{\abovedisplayskip}{0pt} \setlength{\abovedisplayshortskip}{0pt} \setlength{\belowdisplayshortskip}{0pt} \setlength{\belowdisplayskip}{0pt} } \usepackage{zhlipsum} \begin{document} \zhlipsum*[1] \[ \int_{0}^{+\infty} 1/x^{2} \, dx \] \zhlipsum*[2] \end{document} ```
2条回答
论坛 github.com/C
2019-10-17 22:26 .采纳回答
为什么 > 想实现 `\setlength{\abovedisplayskip}{0pt}`,在导言区写是不生效的,只有在正文区写`\setlength{\abovedisplayskip}{0pt}` 才有用 1. `\begin{document}` 的展开中包含 `\document` 2. `\document` 的定义里包含 `\normalsize` 3. `\normalsize` 的定义里包含对 `\abovedisplayskip` 值的修改。 怎么既能让代码在 `\begin{document}` 之前插入,又能生效呢?放在 `\AtBeginDocument` 里。在 `\document` 的定义里,先遇到 `\normalsize` 后遇到输出 `\AtBeginDocuemnt` 内容的代码,所以这么做能生效。 ```tex \AtBeginDocument{% \setlength{\abovedisplayskip}{0pt}% \setlength{\abovedisplayshortskip}{0pt}% \setlength{\belowdisplayshortskip}{0pt}% \setlength{\belowdisplayskip}{0pt}% } ``` 另一个提醒是,不少切换字号的命令会重定义 `\abovedisplayskip` 系列命令,要当心。

一周热门 更多>