## 编译环境 操作系统 * Windows 10 Tex发行版 * TexLive 2019 ## 我的问题 完全按刘海洋《LaTeX入门》书中6.1.1节中的例子写: ``` \documentclass{beamer} \usepackage[UTF8,noindent]{ctexcap} \begin{document} \begin{frame}{古中国数学}{定理发现} 中国在3000 多年前就知道勾股数的概念,比古希腊更早一些。 《周髀算经》的记载: \begin{itemize} \item 公元前11 世纪,商高答周公问: \begin{quote} 勾广三,股修四,径隅五。 \end{quote} \item 又载公元前7--6 世纪陈子答荣方问,表述了勾股定理的一般形式: \begin{quote} 若求邪至日者,以日下为勾,日高为股,勾股各自乘,并而开方除之,得邪至日。 \end{quote} \end{itemize} \end{frame} \end{document} ``` 编译结果如下: ![](https://wenda.latexstudio.net/data/attach/200604/IVB98qrm.png) 书中的结果为: ![](https://wenda.latexstudio.net/data/attach/200604/qZhAEQaE.png) 有两个问题: * “又载”那里为什么突然就换行了? * 字体和刘海洋书中的图6.1不太一样,我编译出来的字体和`\sffamily`(话说`\sffamily`是幼圆还是微软雅黑?)一样吗?

3 回答3

0
第一个问题,可能你的代码里有其他字符,最好通过记事本复制过去。另外可能就是`xeCJK`版本不同导致的。我这里测试没有断行的异常的. 第二个问题,`ctex`宏包一直在更新的, 版本不同默认字体设置有所调整的, 如果的确希望自己可以控制, 可以自己写一个 fontset 自用, 这样就比较延续了.
0
刘海洋书里中文处理部分很多过时了,比如 `ctexcap`,编译会有警告 ```tex Option `noindent' is deprecated. (ctex) The functionality has been removed.\\It's better to set (ctex) the heading styles via `afterindent' option. Package `ctexcap' is deprecated. (ctexcap) Please use package `ctex' with option `UTF8, (ctexcap) noindent, heading' instead: (ctexcap) (ctexcap) \usepackage[UTF8, noindent, heading]{ctex} (ctexcap) ``` 直接用 `ctexbeamer` 就好了 > “又载”那里为什么突然就换行了? 正常的,beamer 觉得这里换行整体更好看。 > 字体不一样 正常,人家的字体设置跟你的不一样(实际上quote应该是斜体的,但微软雅黑没有设置对应的斜体,因此会有警告),`texdoc ctex` 查看 CTeX 宏集自动配置字体策略,`win+xelatex` 为中易字库 + 微软雅黑 完整代码: ```tex \documentclass{ctexbeamer} \begin{document} \begin{frame}{古中国数学}{定理发现} 中国在3000 多年前就知道勾股数的概念,比古希腊更早一些。 《周髀算经》的记载: \begin{itemize} \item 公元前11 世纪,商高答周公问: \begin{quote} 勾广三,股修四,径隅五。 \end{quote} \item 又载公元前7--6 世纪陈子答荣方问,表述了勾股定理的一般形式: \begin{quote} 若求邪至日者,以日下为勾,日高为股,勾股各自乘,并而开方除之,得邪至日。 \end{quote} \end{itemize} \end{frame} \end{document} ```

作者追问:2020-06-05 14:21

这样的换行感觉不是很可以接受啊,有什么解决方法呢?而且编译后有`Overfull \hbox (21.9pt too wide)`警告,这是咋来的,会和这个换行问题有关吗?我发现如果把`7--6`删掉,就比较正常,这个问题会和数字有关吗?谢谢!

回答: 2020-06-05 14:33

- bad box 是 `quote` 环境导致的,是由于你在 `itemize` 里面使用 `quote` 环境的缘故,因为 `itemize` 本身就缩进了,所以会有一部分溢出。

- 解决这个不正常的换行,你在 `\begin{quote}` 前加一个空行就好了,因为如果是连着写,就会认为是在一行没结束的时候开启 `quote` 环境,而此时已经溢出了,beamer 会帮你换到下一行,但是会造成不好的效果。

回答: 2020-06-05 14:34

- bad box 是 quote 环境导致的,是由于你在 itemize 里面使用 quote 环境的缘故,因为 itemize 本身就缩进了,所以会有一部分溢出。

- 解决这个不正常的换行,你在 \begin{quote} 前加一个空行就好了,因为如果是连着写,就会认为是在一行没结束的时候开启 quote 环境,而此时已经溢出了,beamer 会帮你换到下一行,但是会造成不好的效果。


作者追问:2020-06-07 18:15

但是在ctexart里同样这样写,却并没有“突然换行”和Overfull \hbox的问题,就是能正常的多层缩进

\documentclass{ctexart}
\begin{document}
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
\begin{itemize}
\item 又载公元前7--6 世纪陈子答荣方问,表述了勾股定理的一般形式啊啊啊啊啊
\begin{quote}
若求邪至日者,以日下为勾,日高为股,勾股各自乘,并而开方除之,得邪至日。
\end{quote}
\end{itemize}
\end{document}

效果如下:

art.png

其实我就是想在beamer里的效果与ctexart里一样,这怎么弄呢?

如果按你说的在\begin{quote}前加一个空行,beamer里“若求……”相对于“又载……”就没有缩进了。

(我还又多了个小问题,在ctexart里无论\begin{quote}前有无空行,结果都如上图所示,为什么beamer里却不是这样的呢?)谢谢!

回答: 2020-06-07 18:56

beamer 本来就跟 article 不同,设计如此,忍一忍

  • 回复 sikouhjw :OK,我再去研究研究,谢谢! – JerryRTF 2020-06-09 23:43 回复
  • 不同主题页边距之类的不同呗 – sikouhjw 2020-06-09 23:40 回复
  • 只换了个主题,这个换行问题就不见了,真是见鬼了。。。 – JerryRTF 2020-06-09 23:39 回复
0
``` \documentclass{ctexbeamer} \begin{document} \begin{frame}{古中国数学}{定理发现} 中国在 3000 多年前就知道勾股数的概念, 比古希腊更早一些。 《周髀算经》的记载: \begin{itemize} \item 公元前 11 世纪, 商高答周公问: \begin{quote} 勾广三, 股修四, 径隅五。 \end{quote} \item 又载公元前 7--6 世纪陈子答荣方问, 表述了勾股定理的一般形式: \begin{quote} 若求邪至日者, 以日下为勾, 日高为股, 勾股各自乘, 并而开方除之, 得邪至日。 \end{quote} \end{itemize} \end{frame} \end{document} ``` 把每行后面多余的不可见字符删除就可以解决其中一个问题了。 至于字体,我不太擅长改 `beamer` 中的字体。

作者追问:2020-06-06 11:09

应该是没有不可见字符的,因为这个例子我又完全每个字都自己打了一遍,仍然如此。

  • 我给了解答了啊,你试试啊 – sikouhjw 2020-06-06 18:47 回复

你的回答

请登录后回答

你的回答将会帮助更多人,请务必认真回答问题。