这是我之前的问题。我正在处理以下代码,将化学反应纳入云的形状。
\documentclass{article}
\usepackage{chemfig}
\usepackage{tikz}
\usetikzlibrary{shapes}
\newsavebox\ReactionBox
\sbox\ReactionBox{
\tiny
\setchemfig{compound style={draw,line width=0.8pt,
semitransparent,text opacity=1,inner sep=3pt,
rounded corners=1mm}}
\schemestart[0,1,line width=0.6mm]
$A + B$ \arrow([fill=cyan]--[fill=cyan]){->[k_1]}[,,green] $C$
\schemestop
\schemestart[0,1,line width=0.6mm]
$C$ \arrow([fill=cyan]--[fill=cyan]){->[k_2]}[,,green] $D$
\schemestop
}
\begin{document}
\begin{tikzpicture}
\node [align=center,cloud, draw,cloud puffs=10,cloud puff arc=120, aspect=2, inner ysep=2em]
{\usebox\ReactionBox};
\end{tikzpicture}
\end{document}
问题是两个反应并排出现,而不是一个在另一个之上。如何解决这个问题?
答案1
一种方法是使用两个\saveboxes
:
tikz
正如您所见,如果您简单使用,则 该问题与 无关\usebox\ReactionBox
。
笔记:
- 您遗漏了一些尾部
%
,导致了一些虚假空格。有关忽略这些可能出现的问题的一个很好的例子,请参阅Tex 容量超出范围(如果在使用宏后删除%)。
代码:
\documentclass[border=2pt]{standalone}
\usepackage{chemfig}
\usepackage{tikz}
\usetikzlibrary{shapes}
\newsavebox\ReactionBoxA
\newsavebox\ReactionBoxB
\sbox\ReactionBoxA{% <-- Added %
\tiny
\setchemfig{compound style={draw,line width=0.8pt,
semitransparent,text opacity=1,inner sep=3pt,
rounded corners=1mm}}% <-- Added %
\schemestart[0,1,line width=0.6mm]
$A + B$ \arrow([fill=cyan]--[fill=cyan]){->[]}[,,green] $C$
\schemestop}
\sbox\ReactionBoxB{%
\tiny
\setchemfig{compound style={draw,line width=0.8pt,
semitransparent,text opacity=1,inner sep=3pt,
rounded corners=1mm}}% <-- Added %
\schemestart[0,1,line width=0.6mm]
$C$ \arrow([fill=cyan]--[fill=cyan]){->[]}[,,green] $D$
\schemestop}
\begin{document}
\begin{tikzpicture}
\node [align=center,cloud, draw,cloud puffs=10,cloud puff arc=120, aspect=2, inner ysep=2em]
{\usebox\ReactionBoxA \\ \usebox\ReactionBoxA};
\end{tikzpicture}
\end{document}