我确信我的问题与我的操作系统有关,但我不知道原因和方式。
去年我使用的是 Debian wheezy,现在我用的是 Mint Rebecca。
我正在修改课程的幻灯片,在 Mint(emacs/auctex 到 pdf)上编译旧幻灯片后,我发现与去年的幻灯片有一些差异。
我已经在系统上取消了 wheezy,所以目前无法检查差异。
考虑以下(尽可能清理的)代码
\documentclass[final, 10pt]{beamer}
\usepackage{chemfig}
\newcommand*\circleatom[1]{\tikz\node[circle,draw,fill=green!30]{\printatom{#1}};}
\definesubmol{&}{-[:100,.8,,,draw=none]}
\setlewisdist{4pt}
\definesubmol{Glycine}{
H_{2}
-[:-90]\lewis{0:,N}
-[:225]H_{2}C
-[:-45]C(=[:-90]O)
-[:30]\lewis{7:3:1:,O}!&\circleatom{Me}}
\definesubmol{EDTA}{
HOOC-CH{_2}-[::-45,,1]
{\lewis{4:,N}}
(-[::-90,,1,1]CH{_2}-[::-45]HOOC)
-CH{_2}-CH{_2}-
\lewis{0:,N}
(-[::45]CH{_2}-COOH)
-[::-45]CH{_2}-COOH
}
\begin{document}
\begin{frame}
\chemname{\chemfig{!{Glycine}}}{Glycine}
\end{frame}
\begin{frame}
\chemname{\chemfig{!{EDTA}}}{EDTA}
\end{frame}
\end{document}
嗯,这是这个,但在 Mint 和 Beamer 文档上,结果不同。
“高”甘氨酸边界框的高度似乎是由“短”EDTA 继承的,其“EDTA”名称距离分子本身很远。
事实上,如果你注释该行,\chemname{\chemfig{!{Glycine}}}{Glycine}
EDTA 标题就会切换回更靠近分子的正确位置。
我无法添加我已保存的去年编译的 pdf,但我向你保证,一年前 wheezy 上并不存在这种行为。
我确信我在这里遗漏了一些明显的东西,但我看不出是什么!
答案1
\chemname
根据化合物的深度设置化合物下方的名称以及以前的用法的\chemname
。chemfig
手册上说:
事实上,绘制
<name>
命令\chemname
插入 1.5ex + 迄今为止最大的分子深度低于每个分子的基线 [...]。该命令\chenameinit{<stuff>}
使用 初始化这个最大深度<stuff>
。
从技术上讲,这意味着\CF@dp@max
最初为 0.0pt 的部分已更新全球每次使用时,\chemname
如果当前深度<stuff>
大于当前的值\CF@dp@max
。
手册里也告诉了解决办法:
因此,我们应该:
\chemnameinit{<deepest molecule>}
在反应中使用命令之前写上\chemname
,除非反应从最深的分子开始;- 写完化学反应的所有名称后再写
\chemnameinit{}
,以免该反应的最大深度干扰未来的反应。
这种行为的原因是为了能够与不同深度的分子发生反应,其中名称是对齐的。这是全局进行的,以便能够在使用chemfig
's创建的方案中对齐名称\schemestart ... \schemestart
,其中化合物放在框中(感谢@unbonpetit解释背景)。
\chemnameinit{}
在您第一次使用 之后使用\chemname
也是解决方案。或者,您也可以\chemname*{...}{...}
对第二个分子使用带星号的版本。带星号的版本不会考虑之前的调用,但也不会重置\CF@dp@max
。
\documentclass{article}
\usepackage{chemfig}
\newcommand*\circleatom[1]{\tikz\node[circle,draw,fill=green!30]{\printatom{#1}};}
\definesubmol{&}{-[:100,.8,,,draw=none]}
\setlewisdist{4pt}
\definesubmol{Glycine}{
H_{2}
-[:-90]\lewis{0:,N}
-[:225]H_{2}C
-[:-45]C(=[:-90]O)
-[:30]\lewis{7:3:1:,O}!&\circleatom{Me}}
\definesubmol{EDTA}{
HOOC-CH{_2}-[::-45,,1]
{\lewis{4:,N}}
(-[::-90,,1,1]CH{_2}-[::-45]HOOC)
-CH{_2}-CH{_2}-
\lewis{0:,N}
(-[::45]CH{_2}-COOH)
-[::-45]CH{_2}-COOH
}
\begin{document}
% first solution:
\begingroup
\chemname{\chemfig{!{Glycine}}}{Glycine}
\chemnameinit{} % (un-) comment to see the difference
\endgroup
\chemname{\chemfig{!{EDTA}}}{EDTA}
% second solution:
\begingroup
\chemname{\chemfig{!{Glycine}}}{Glycine}
\endgroup
\chemname*{\chemfig{!{EDTA}}}{EDTA}
\end{document}