chemfig:\definesubmol 带有变量

chemfig:\definesubmol 带有变量

使用该chemfig包,我想定义一个带有变量部分的结构元素。我还没有看到变量与一起使用\definesubmol。而且\newcommand似乎只适用于非常简单的替换:

\documentclass{standalone}
\usepackage{chemfig}
\begin{document}
\definesubmol\A{(-[,-0.3,,,draw=none]1)}
\definesubmol\B{(-[,-0.3,,,draw=none]2)}
\definesubmol\C{(-[,-0.3,,,draw=none]3)}
\definesubmol\D{(-[,-0.3,,,draw=none]4)}

\newcommand\BLUE[1]{\textcolor{blue}{#1}}
\newcommand\X[1]{(-[,-0.3,,,draw=none]{#1})}

\chemfig{*6((!\A)-(!\B)-(!\C)-\BLUE{N}(!\D)---)}
\chemfig{*6((!\A)-(!\B)-(!\C)-\BLUE{N}(!\D)-\X{5}--)}
\end{document}

编译自xelatex

结果

在上面的例子中,我如何定义更好的命令 \X ?

答案1

目前,\definesubmol定义 macro-submol 时无需参数。未来版本 1.4 可用这里并很快正式发布,允许争论。

\documentclass{article}
\usepackage{chemfig}
\begin{document}
Version of chemfig: \CFver

With submol-macro:
\definesubmol\X1{-[,-0.3,,,draw=none]#1}
\newcommand*\BLUE[1]{\textcolor{blue}{#1}}
\chemfig{*6((!\X A)-(!\X B)-(!\X C)-\BLUE{N}(!\X D)---)}% or \chemfig{*6((!\X{A})-(!\X{B})-(!\X{C})-\BLUE{N}(!\X{D})---)}

With submol-name:
\definesubmol X1{-[,-0.3,,,draw=none]#1}
\chemfig{*6((!XA)-(!XB)-(!XC)-\BLUE{N}(!XD)---)}% or \chemfig{*6((!X{A})-(!X{B})-(!X{C})-\BLUE{N}(!X{D})---)}
\end{document}

在此处输入图片描述

答案2

由于\definesubmol的早期版本不允许添加其他参数chemfig,因此您需要以不同的方式解决它。例如像这样:

\documentclass{standalone}
\usepackage{chemfig}

\begin{document}
 \definesubmol\A{(-[,-0.3,,,draw=none]1)}
 \definesubmol\B{(-[,-0.3,,,draw=none]2)}
 \definesubmol\C{(-[,-0.3,,,draw=none]3)}
 \definesubmol\D{(-[,-0.3,,,draw=none]4)}

 \definesubmol\X{-[,-0.3,,,draw=none]}

 \newcommand\BLUE[1]{\textcolor{blue}{#1}}

 \chemfig{*6((!\A)-(!\B)-(!\C)-\BLUE{N}(!\D)---)}
 \chemfig{*6((!\A)-(!\B)-(!\C)-\BLUE{N}(!\D)-(!\X5)--)}

\end{document}

但我猜,这种方法并不适用于每种情况......

在此处输入图片描述

这种方法仍然有效,但软件包的较新版本允许使用\definesubmol参数,这使得事情变得更容易:参见其他答案。

相关内容