使用 mol2chemfig 时出现 \setbondstyle 未定义错误

使用 mol2chemfig 时出现 \setbondstyle 未定义错误

我在使用 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.texmol2chemfigfix.sty也许我没有将这些文件放在正确的目录中...

相关内容