chemfig、babel 和 beamer 之间有冲突吗?

chemfig、babel 和 beamer 之间有冲突吗?

几年来,我一直将 chemfig 软件包与 beamer 以及 babel 中的捷克语设置一起使用。我知道激活连字符的 babel 简写与 chemfig 反应方案环境之间存在冲突。我已经解决了(或使用了某人的解决方案)chemformula 和 chemfig 反应方案中的简单箭头的相同问题,但我找不到使用它的一个特定功能的解决方案:

\documentclass{beamer}
%\documentclass{article}
\usepackage[english,czech]{babel}\shorthandoff{-}
\usepackage{chemfig}
\usetikzlibrary{babel}
\author{TK}
%----- This resolves the problem for the article class ------------------------
\usepackage{etoolbox}
    \pretocmd\schemestart{\shorthandoff{-}}{}{}
    \apptocmd\schemestop{\shorthandon{-}}{}{}
%-----------------------------------------------------------
\begin{document}
    \begin{frame}
    %   \begin{tikzpicture}
    %       \node{%
                \schemestart
                    \subscheme{E\+S\arrow{<=>}ES\arrow{->}E\+P}
                    \arrow(@c2.197--){0}[-90,.2] +
                \schemestop
    %       };
    %   \end{tikzpicture}
    \end{frame}
\end{document}

问题在于那条线\arrow(@c2.197--){0}[-90,.2] +,特别是括号中的箭头参数。没有它,一切都会顺利进行,当然,除了放置不可见的箭头及其目标(加号),该参数应该为此服务。

在文章类中一切正常,但在 beamer 中出现错误,当方案是否嵌入 tikzpicture 节点时,情况会有所不同。

在 tikzpicture 中,错误是

! Argument of \CF@arrow@a has an extra }.

<inserted text>

\par

l.22 \end{frame}

?

在框架基础层面,错误是

! Paragraph ended before \CF@arrow@a was complete.

<to be read again>

\par

l.24

?

我尝试解决这个问题一整天都没有成功……

有谁遇到过同样的问题?

提前谢谢了!

托马斯

答案1

我怀疑问题可能出在@。您可以使用框架来解决这个问题fragile

\documentclass{beamer}
%\documentclass{article}
\usepackage[english,czech]{babel}\shorthandoff{-}
\usepackage{chemfig}
\usetikzlibrary{babel}
\author{TK}
%----- This resolves the problem for the article class ------------------------
\usepackage{etoolbox}
    \pretocmd\schemestart{\shorthandoff{-}}{}{}
    \apptocmd\schemestop{\shorthandon{-}}{}{}
%-----------------------------------------------------------
\begin{document}
    \begin{frame}[fragile]
    %   \begin{tikzpicture}
    %       \node{%
                \schemestart
                    \subscheme{E\+S\arrow{<=>}ES\arrow{->}E\+P}
                    \arrow(@c2.197--){0}[-90,.2] +
                \schemestop
    %       };
    %   \end{tikzpicture}
    \end{frame}
\end{document}

相关内容