我在使用 mol2chemfig 包时观察到命令 \setbondstyle 未定义错误,其含义如下:
\documentclass[preview,border=7pt,active,tightpage]{standalone}
\usepackage{booktabs}
%\usepackage{chemfig}
\usepackage{mol2chemfig}
\usepackage{filecontents}
\usepackage[scaled]{helvet}
\begin{filecontents}{anthracene_aromatic_rings.tex}
\chemfig{ % 5
-[:210,0.96]% 1
-[:270,0.96]% 2
(
-[:210.9]% 8
-[:150.4]% 12
-[:90]% 11
-[:29.6]% 7
-[:329.1]% -> 1
-[:209.1,0.99,,,draw=none]\mcfcringle{1.28}% (o)
)
(
-[:30,0.96,,,draw=none]\mcfcringle{1.25}% (o)
)
-[:330,0.96]% 6
-[:30,0.96]% 4
-[:90,0.96]% 3
(
-[:150,0.96]% -> 5
)
-[:30.9]% 9
(
-[:270.2,0.99,,,draw=none]\mcfcringle{1.29}% (o)
)
-[:330.4]% 13
-[:270]% 14
-[:209.6]% 10
(
-[:149.1]% -> 4
)
}
\end{filecontents}
\begin{filecontents}{methane.tex}
\chemfig{ H% 2
-[:210]% 1
(
-[:210]H% 3
)
(
-[:300]H% 5
)
-[:120]H% 4
}
\end{filecontents}
% sans serif font
\renewcommand\familydefault{\sfdefault}
% define formulae
\def\anthracene{\mathrm{C_{14}H_{10}}}
\def\methane{\mathrm{CH_{4}}}
\begin{document}
\begin{center}
\begin{tabular}[]{lp{1.5cm}}
\toprule
\textbf{Formula} & \textbf{Structure}\\
\midrule%
%$\methane$ & \begin{minipage}{1cm} \input{methane.tex} \end{minipage} \\ [2mm]%
$\anthracene$ & \begin{minipage}{1cm} \input{anthracene_aromatic_rings.tex} \end{minipage} \\ [2mm]%
\bottomrule
\end{tabular}
\end{center}
\end{document}
\usepackage{mol2chemfig}
如果注释掉表中蒽的行(调用了 中包含的一些宏mol2chemfig
),则编译成功。
我验证了我的chemfig
包安装(通过控制台管理)并删除了chemfig.sty
我的 texmf 树中的副本。
对于的安装mol2chemfig
,我只需下载mol2chemfig.sty
并手动将其放置在我的 texmf 树中,在存放文件后执行 FNDB。
是否存在我没有\setbondstyle
定义的附件文件?
也许我应该调用一个补充包?
答案1
我是 mol2chemfig 的作者,很抱歉尚未修复此问题,尽管不久前有人向我指出了这个问题。作为快速修复,您可以注释掉或删除整个块
\let\mcf@setbondstyle\setbondstyle
\renewcommand{\setbondstyle}[1]{%
\mcf@setbondstyle{#1}%
\tikzset{mcfbond/.style={#1}}%
}
里面mol2chemfig.sty
。
编辑:好的,这里还有一些我无法解决的问题。在 的新版本中chemfig
,前者\CF@atom@sep
和\CF@cycle@inraduiscoeff
已被 和 替换\CF_atomsep
,\CF_cycleradiuscoeff
但简单地在 中进行这些替换mol2fchemfig
不起作用。可能涉及一些超出我能力范围的 catcode 技巧。我会向作者寻求chemfig
帮助,希望很快会有更新。与此同时,唯一的解决方案似乎是使用 的旧版本chemfig
。
第二次编辑:我刚刚在我的系统上测试了这一点,并且它起作用了。
1)我下载了旧版本(1.2d),并chemfig.tex
发布在https://pastebin.com/uJWRDXuj并将其保存为cf-pastebin.tex
一个空目录。
2) 在同一目录中,我mol2chemfig.sty
以名称保存了一份副本mol2chemfigfix.sty
。我编辑了该文件的前几行以供cf-pastebin.tex
直接使用:
% auxiliary package for mol2chemfig
\ProvidesPackage{mol2chemfigfix} % use the modified mol2chemfig package
\RequirePackage{xcolor, twoopt, ifmtarg, tikz} % load tikz as a prereq for chemfig
\input{cf-pastebin.tex} % load this directly, don't mess with chemfig.sty
\def\printatom#1{\ensuremath{\mathrm{#1}}}% \printatom pour LaTeX.
\expandafter\def\csname CF\string_begintikzpicture\endcsname{\begin{tikzpicture}}%
\expandafter\def\csname CF\string_endtikzpicture\endcsname{\end{tikzpicture}}%
\usetikzlibrary{decorations}
然后我使用了以下 MWE(也保存到同一目录中):
\documentclass[border=2pt]{standalone}
\usepackage{mol2chemfigfix}
% minimal example that exercises all \CF@... macros used by mol2chemfig
\begin{document}
\chemfig{
-[:210,0.96]% 1
-[:270,0.96]% 2
(
-[:210.9]% 8
-[:150.4](-[:210]
-[:150,,,,drhs]
)
-[:90]% 11
-[:29.6]% 7
-[:329.1]% -> 1
-[:209.1,0.99,,,draw=none]\mcfcringle{1.28}% (o)
)
}
\end{document}
这不会产生任何错误并产生预期的输出。由于它chemfig.sty
根本没有调用,我希望这对你也有效。
答案2
chemfig
我在使用和包时遇到了问题mol2chemfig
。当我尝试使用语句设置键长时,\setatomsep{2.25 em}
我收到以下错误消息:
`Undefined control sequence. \setatomsep`.
我尝试按照 @Michel Palmer 提供的步骤修复该问题,但未能解决问题:MWE 给出很多错误,第一个是Undefined control sequence
。所以,我想知道,我必须在哪个目录中保存文件cf-pastebin.tex
?mol2chemfigfix.sty
也许我没有将这些文件放在正确的目录中...