Chemfig MakeBraces 错误

Chemfig MakeBraces 错误

我想用 chemfig 制作这样的聚合物结构:

\documentclass{article}
\usepackage{chemfig}
\begin{document}
\newcommand\setpolymerdelim[2]{\def\delimleft{#1}\def\delimright{#2}}
\def\makebraces[#1,#2]#3#4#5{%
\edef\delimhalfdim{\the\dimexpr(#1+#2)/2}%
\edef\delimvshift{\the\dimexpr(#1#
2)/2}%
\chemmove{%
\node[at=(#4),yshift=(\delimvshift)]
{$\left\delimleft\vrule height\delimhalfdim depth\delimhalfdim
width0pt\right.$};%
\node[at=(#5),yshift=(\delimvshift)]
{$\left.\vrule height\delimhalfdim depth\delimhalfdim
width0pt\right\delimright_{\rlap{$\scriptstyle#3$}}$};}}
\setpolymerdelim()
\chemfig[][scale=0.5]{-[@{op, 0.75}]O-[:30](=[:120]O)-*6(-=-(-(=[:60]O)-[:-30]O--[:30]-[@{cl, 0.25}])=-=)}
\makebraces[8pt, 8pt]{\!\!n}{op}{cl}\\
\end{document}

Overleaf 制作了聚合物结构和支架,但是却给了我很多错误消息:

\makebraces 定义中的参数数量非法。

l.70 \edef\delimvshift{\the\dimexpr(#1#

您的意思是输入 ## 而不是 #,对吗?或者之前某个地方忘记了 },导致一切都搞砸了?我假设您的意思是 ##。

有人知道我做错了什么吗?

答案1

注意chemfig软件包最近已更新,版本 1.33 包含\polymerdelim具有以下语法的宏:

\polymerdelim[<keys>=<values>]{<node1>}{<node2>}

有关使用的详细信息,请参阅12.4 绘制聚合物单元第 43 页chemfig 手册。我不确定 Overleaf 是否已经更新了他们的软件包,但无论如何我都会坚持使用新语法。我也不会使用缩放;相反,将键缩短一点。

因此,针对聚对苯二甲酸乙二醇酯的结构,我建议如下(我也稍微调整了角度):

\documentclass{article}
\usepackage{chemfig}
    \setchemfig{
        atom sep = 1.75em,
        double bond sep = 0.3em,
        bond join = true,
    }
\renewcommand*\printatom[1]{\ensuremath{\mathsf{#1}}}

\begin{document}

\chemfig{
    -[@{op, 0.5}]O-[:60](=[:120]O)-*6(-=-(-(=[:60]O)-[:-60]O--[:60]-[@{cl, 0.5}])=-=)
}
\polymerdelim[height = 32pt, depth = 4pt, indice = \!\!n]{op}{cl}

\end{document}

在此处输入图片描述

相关内容