考虑这个最小的例子:
\documentclass[12pt]{article}
\usepackage{tikz}
\usepackage{chemfig}
\begin{document}
\begin{tikzpicture}
\path node(A){\chemfig{
@{N1}N(-[::90,0.4,,,draw=none]H)-[::-30](<[::-60]CH_2-[::0]OH)-[::60](=[::60]O)-[::-60]-[,0.3,,,draw=none]
@{N2}N(-[::-90,0.4,,,draw=none]H)-[::30](<:[::60]CH_2-[::0]OH)-[::-60](=[::-60]O)-[::60]-[,0.3,,,draw=none]
@{N3}N(-[::90,0.4,,,draw=none]H)-[::-30](<[::-60]CH_2-[::0]OH)-[::60](=[::60]O)-[::-60]-[,0.3,,,draw=none]
}};
\end{tikzpicture}
\begin{tikzpicture}[remember picture,overlay]
\draw[red,very thick](N1)--(N3);
\end{tikzpicture}
\end{document}
有没有办法把所有内容放在一个 tikzpicture 中,避免编译两次?更重要的是:我如何定义允许执行此类操作的变量?:
\documentclass[12pt]{article}
\usepackage{tikz}
\usepackage{chemfig}
\def\sera#1{@{N#1}N(-[::90,0.4,,,draw=none]H)-[::-30](<[::-60]CH_2-[::0]OH)-[::60](=[::60]O)-[::-60]}
\def\serb#1{@{N#1}N(-[::-90,0.4,,,draw=none]H)-[::30](<:[::60]CH_2-[::0]OH)-[::-60](=[::-60]O)-[::60]}
\begin{document}
\begin{tikzpicture}
\path node(A){\chemfig{
\sera{1}-[,0.3,,,draw=none]
\serb{2}-[,0.3,,,draw=none]
\sera{3}-[,0.3,,,draw=none]
}};
\end{tikzpicture}
\begin{tikzpicture}[remember picture,overlay]
\draw[red,very thick](N1)--(N3);
\end{tikzpicture}
\end{document}
使用 let 来处理错误
Package pgf Error: No shape named N1 is known
我发现错误来自变量的扩展......但我还不了解这是如何工作的,我很感激任何帮助。
注意:我想用 tikzpicture 处理不同的 chemfig,因此使用独立的 \chemfig 然后使用 \chemmove 的直接方法并不方便我的需求。
谢谢
答案1
至于你的第二个问题,你基本上没问题。只需按如下方式修改这些行(将它们视为子分子):
\path node(A){\chemfig{
!{\sera{1}}-[,0.3,,,draw=none]
!{\serb{2}}-[,0.3,,,draw=none]
!{\sera{3}}-[,0.3,,,draw=none]
}};
使用 pdflatex 编译它应该可以完成工作。