使用该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
参数,这使得事情变得更容易:参见其他答案。