我教化学,想演示我用来chemfig
绘制分子的化学结构的绘制和命名,我可以做得很好。但是,例如在 4-乙基-3,3-二甲基己烷分子中,分子中有许多成分,我想一点一点地揭示它们,以说明这种分子的命名/绘制。
我们有一个己烷根——画出这个
在碳 4 上添加乙基 - 突出显示此添加
在碳 3 上添加两个甲基 - 突出显示这些添加
下面是将分子一点一点构建为单独图形的代码,但我希望能够揭示一个分子并在添加时突出显示各个部分。
\onslide<n->
我曾尝试在我想发现的部分中使用,但结果却一团糟。如果有人有任何想法,我将不胜感激……
下面很好,但我更喜欢一点一点地添加到母分子中……
\documentclass[t]{beamer}
\usepackage{chemfig}
\begin{document}
\begin{frame}{}
4-ethyl-3,3-dimethylhexane
\chemfig[][scale=0.5]{CH_3%6 these numbers are the carbon positions in the chain for ease of reading
-[::30]%5
-[::-60]%4
(-[::-60]-[::60]CH_3)%ethyl
-[::60]%3
(-[::30]CH_3)
(-[::90]CH_3)%methyl
-[::-60]%2
-[::60]CH_3%1
}
\begin{itemize}
\item root is hexane; hex=6; 6 carbon alkane
\onslide<2->{
\chemfig[][scale=0.5]{CH_3%6 these numbers are the carbon positions in the chain for ease of reading
-[::30]%5
-[::-60]%4
%(-[::-60]-[::60]CH_3)%ethyl
-[::60]%3
%(-[::30]CH_3)%methyl
%(-[::90]CH_3)%methyl
-[::-60]%2
-[::60]CH_3%1
}
}
\onslide<3->{\item 4-ethyl: ethyl substituent = 2 carbon alkyl group; on carbon 4}
\onslide<4->{
\chemfig[][scale=0.5]{CH_3%6 these numbers are the carbon positions in the chain for ease of reading
-[::30]%5
-[::-60]%4
(-[::-60]-[::60]CH_3)%ethyl}
-[::60]%3
%(-[::30]CH_3)%methyl
%(-[::90]CH_3)%methyl
-[::-60]%2
-[::60]CH_3%1
}
}
\onslide<5->{\item 3,3-dimethyl: di= 2, methyl substituents = 1 carbon alkyl group; on carbons 3 and 3}
\onslide<6->{\chemfig[][scale=0.5]{CH_3%6 these numbers are the carbon positions in the chain for ease of reading
-[::30]%5
-[::-60]%4
(-[::-60]-[::60]CH_3)%ethyl
-[::60]%3
(-[::30]CH_3)%methyl
(-[::90]CH_3)%methyl
-[::-60]%2
-[::60]CH_3%1
}
}
\end{itemize}
\end{frame}
\end{document}
答案1
我们可以将想要隐藏的键的不透明度设置为零,然后使用 使它们再次可见\pgfkeysalso
。
遗憾的是,我还没有找到一种简单的方法将 TikZ 选项传递给节点(像C
和 这样的原子H_3
),否则它会像 一样工作visible on=<slides>
。
我提出两种解决方案:
重新定义
\printatom
并检查一组整数是否与当前节点号相符。要查看必须使用的数字,如果它不应该是全局的,则
\qrrDebugNodes
需要将其括在内{ }
,或者在分析结束时重置\chemfig
\qrrDebugNodes[false]
这些键仍然可以放置在不同的原子上(无论语法如何)。
\unc
构建于其上的简单宏\uncover
在指定幻灯片上隐藏其参数。其缺点是CH_3
被视为一个原子而不是两个原子(C
和H_3
),这使得键的位置失效,即使我们使用多个\unc
(每个原子一个)。
重新定义的解决方案\printatom
代码
\documentclass[t]{beamer}
\usepackage{chemfig,mathtools}
\tikzset{
invisible/.style={opacity=0,text opacity=0},
visible on/.style={alt=#1{}{invisible}},
alt/.code args={<#1>#2#3}{%
\alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}
},
}
\makeatletter
\newcounter{qrr@nodes}
\newif\if@qrr@debug
\newcommand*{\setNodes}[1]{%
\def\qrr@nodes{#1}%
\setcounter{qrr@nodes}{0}% if \setNodes is used inside a frame the reset happens too!
}
\newcommand*{\qrrDebugNodes}[1][true]{
\csname @qrr@debug#1\endcsname
}
\renewcommand*{\printatom}[1]{%
\def\qrr@cmd{}%
\def\qrr@slides@{}%
\foreach \qrr@number/\qrr@slides in \qrr@nodes {%
\foreach \qrr@number@ in \qrr@number {%
\ifnum\value{qrr@nodes}=\qrr@number@\relax
\global\let\qrr@cmd\uncover
\xdef\qrr@slides@{<\qrr@slides>}%
\breakforeach
\fi
}%
}%
\ensuremath{%
\expandafter\qrr@cmd\qrr@slides@{\mathrm{#1}}%
\if@qrr@debug
\smash{\mathllap{\mathop{}\limits_{\textnormal{\tiny (\the\value{qrr@nodes})}}}}%
\fi
}%
\stepcounter{qrr@nodes}%
}
\makeatother
\begin{document}
\begin{frame}
\setNodes{{5,6}/2-,{8,9}/3-,{10,11}/4-}
%\qrrDebugNodes
\chemfig[][scale=1.5]{CH_3%6 these numbers are the carbon positions in the chain for ease of reading
-[::30]%5
-[::-60]%4
(-[::-60,,,,visible on=<2->]-[::60,,,,visible on=<2->]CH_3)%ethyl
-[::60]%3
(-[::30,,,,visible on=<3->]CH_3)%methyl
(-[::90,,,,visible on=<4->]CH_3)%methyl
-[::-60]%2
-[::60]CH_3%1
}
\end{frame}
\end{document}
输出
带有调试设置的输出
解决方案\unc
以下解决方案\unc
使chemfig
被视为一个原子,并且即使使用两个 ,CH_3
也无法将其拆分成C
和以正确放置键。H_3
\unc
CH_3
与正常输出相比,上面的位置放错了。
代码
\documentclass[t]{beamer}
\usepackage{chemfig}
\tikzset{
invisible/.style={opacity=0,text opacity=0},
visible on/.style={alt=#1{}{invisible}},
alt/.code args={<#1>#2#3}{%
\alt<#1>{\pgfkeysalso{#2}}{\pgfkeysalso{#3}}
},
}
\newcommand*{\unc}[2]{%
\uncover<#1>{#2}
}
\begin{document}
\begin{frame}
\chemfig[][scale=1.5]{CH_3%6 these numbers are the carbon positions in the chain for ease of reading
-[::30]%5
-[::-60]%4
(-[::-60,,,,visible on=<2->]-[::60,,,,visible on=<2->]\unc{2-}{CH_3})%ethyl
-[::60]%3
(-[::30,,,,visible on=<3->]\unc{3-}{CH_3})%methyl
(-[::90,,,,visible on=<4->]{\unc{4-}{C}}{\unc{4-}{H_3}})%methyl
-[::-60]%2
-[::60]CH_3%1
}
\end{frame}
\end{document}
输出
答案2
你可以用白色稍微作弊一下 :-)
例如尝试一下:
\parbox[c][.5\textheight][c]{\columnwidth}{%
\centering\mbox{}%
\def\test{white}%
\only<2>{\def\test{red}}%
\only<3->{\def\test{black}}%
\chemfig[][scale=0.5]{CH_3%6
-[::30]%5
-[::-60]%4
(-[::-60,,,,\test]-[::60,,,,\test]\textcolor{\test}{CH_3})%ethyl
-[::60]%3
(-[::90]CH_3)%methyl
-[::-60]%2
-[::60]CH_3%1
}
}
上述代码将在第 2 张幻灯片中以红色显示一个分支,然后以黑色显示。