1

An excellent suggestion for a way to call chemfig symbols stored in individual files from a common library was put forth here. I have tested the solution with a variety of relatively simple compounds / chemfig symbols. This issue shows a case where the proposed solution produces an error.

The issue is suspected to reside somewhere in the file writing and cat code handling.

Any suggestions on tweaks enabling the code to handle more complex compounds are greatly appreciated.

I have included the mwe here:

\documentclass[english,border=1mm]{standalone}
\usepackage[T1]{fontenc}
\usepackage{chemfig}
\usepackage{tikz}
\usepackage{catchfile}
\usepackage{mol2chemfig}%

\tikzset{ % #1 = left, #2 = lower, #3 = right, #4 = upper enlarge bounding box by/.style n args={4}{ execute at end picture={ \path ([shift={(-#1, -#2)}]current bounding box.south west) -- ([shift={(#3, #4)}]current bounding box.north east); } } }

% chemfigdo \newcommand{\chemfigdo}[2]{\chemfig[#2]{#1}}%

% chemfiginput \newcommand{\chemfiginput}[2][]{% \CatchFileDef{\chemfiginputtemp}{#2}{\csname CF_sanitizecatcode\endcsname}% \expandafter\chemfigdo\expandafter{\chemfiginputtemp}{#1}% }%

% create new command for tikzpicture call \newcommand\callchemfigsymbol[1]{% \chemfiginput[ atom style={scale=\chemfigscale}, atom sep=\chemfigatomsep, chemfig style={ enlarge bounding box by={\chemfigborder}{\chemfigborder}{\chemfigborder}{\chemfigborder}, baseline=(current bounding box.center), color=\chemfigcolor, line width=\chemfiglinewidth } ]{#1}% }

\begin{filecontents}{s_adenosyl_l_methionine.tex} O% 6 =[:95.9]% 26 ( -[:35.9]O% 5 -[:335.9,0.62]H% 50 ) -[:155.9]% 24 ( <:[:95.9]N% 10 ( -[:155.9,0.62]H% 46 ) -[:35.9,0.62]H% 45 ) ( -[:155.9,0.62]H% 44 ) -[:215.9]% 21 ( -[:235.9,0.62]H% 39 ) ( -[:315.9,0.62]H% 40 ) -[:155.9]% 18 ( -[:55.9,0.62]H% 34 ) ( -[:135.9,0.62]H% 35 ) -[:215.9]\mcfabove{S}{_{\mcfplus}}% 1 ( -[:275.9]% 22 ( -[:275.9,0.62]H% 42 ) ( -[:5.9,0.62]H% 43 ) -[:185.9,0.62]H% 41 ) -[:155.9]% 17 ( -[:55.9,0.62]H% 32 ) ( -[:135.9,0.62]H% 33 ) >[:215.9]% 13 ( -[:332.9,0.62]H% 28 ) -[:269.9]O% 2 -[:197.9]% 16 ( -[:125.9]% 15 ( -[:53.9]% 14 ( -[:341.9]% -> 13 ) ( -[:44.9,0.62]H% 29 ) <:[:107.9]O% 3 -[:47.9,0.62]H% 36 ) ( -[:116.9,0.62]H% 30 ) <:[:179.9]O% 4 -[:119.9,0.62]H% 37 ) ( -[:314.9,0.62]H% 31 ) <[:251.9]N% 7 -[:197.8,0.994]% 19 =^[:150]N% 9 -[:210]% 27 ( -[:150,0.62]H% 47 ) =^[:270]N% 11 -[:330]% 25 ( -[:270]N% 12 ( -[:330,0.62]H% 49 ) -[:210,0.62]H% 48 ) =^[:30]% 23 ( -[:90]% -> 19 ) -[:342.2,0.994]N% 8 =^[:54,0.994]% 20 ( -[:126,0.994]\phantom{N}% -> 7 ) -[,0.62]H% 38 \end{filecontents}

\begin{filecontents}{methane_pseudo_3D_stereo.tex} H% 2 -[:270]C% 1 ( -[:200]H% 4 ) ( <[:310]H% 5 ) <:[:350]H% 3 \end{filecontents}

% define the atom sep \newlength{\chemfigatomsep}% \setlength{\chemfigatomsep}{2.75em}%

% define the line width \newlength{\chemfiglinewidth}% \setlength{\chemfiglinewidth}{0.75pt}%

% define the scale \def\chemfigscale{1}

% define the color \def\chemfigcolor{blue!40!black}

% define separation length \newlength{\chemfigborder} \setlength{\chemfigborder}{1mm}

\begin{document}

%\callchemfigsymbol{s_adenosyl_l_methionine.tex}% when I uncomment this, I observe error \callchemfigsymbol{methane_pseudo_3D_stereo.tex}% this works fine

\end{document}

  • 2
    What error? If I download mol2chemfig (which is not available in TeX LIve), I get no error when uncommenting the first \callchemfigsymbol line. – egreg Aug 03 '20 at 09:48
  • My apologies, I am able to compile. I must have had an older version of mol2chemfig – John Chris Aug 03 '20 at 13:30

0 Answers0