为什么 xifthen 不能与这个 beamer 代码一起工作?

为什么 xifthen 不能与这个 beamer 代码一起工作?

我尝试使用 来\isempty判断宏参数是否为空。使用 时,它运行正常book,但使用 时,它会给出错误消息beamer

! Undefined control sequence.
<write> ...[]{Outline0.0.1.1}{NOT empty}{\Parent2 
                                                  }% 1

梅威瑟:

%\documentclass{book}
\documentclass{beamer}
\usepackage{xifthen}

\newcommand{\MyMacro}[2][]{ 
            \ifthenelse{\isempty{#1}}{\subsection{empty}}{\subsection{NOT empty}}
}
\begin{document}

\MyMacro[1]{First}
hello
\end{document}

我确实有一个更高级别的单元“部分” \Mysection{title1}{}{title2} ,现在我找到了(可能)原因。看起来有一个“警告”(我正在寻找“未定义”,它跟在“警告”后面)

starting section (./Demo.toc)pdfTeX warning (ext4):
 destination with the same identifier (name{Navigation1}) has been already used
, duplicate ignored
<to be read again> 
                   \relax 
l.4 ...title1}{}{title2}
                                                  pdfTeX warning (ext4): destin
ation with the same identifier (name{page.1}) has been already used, duplicate 
ignored
<to be read again> 
                   \relax 
l.4 ...title1}{}{title2}

此行指的是我的“部分”。

我的文档包含可打印的源文件,既有“书”的形式,其中最高单位是“章”,也有“投影仪”的形式,其中相同的文本处于“节”级别。这就是为什么我需要使用自己的分段单位,并将其转换为“章”或“节”。这两个本机单位都有可选参数(简称)。

\MEchapter}[2][]{
    \section[#1]{#2} % Results in error if #1 empty
    \ifthenelse{\isempty{#1}}{\section{#2}}{\section[#1]{#2}}   % runs OK 
}

也就是说,错误似乎是我试图将一个空参数传递给部分,但方括号是存在的。如果省略方括号,它就可以正常工作。

我看不出有什么理由会这样。

答案1

beamer为每个部分单元类型定义一个。您的代码中\Parent没有为您的 -级别 2 定义 - 级别 1。\section\subsection

要么使用

\newcommand{\MyMacro}[2][]{%
  \ifthenelse{\isempty{#1}}{\section{empty}}{\section{NOT empty}}
}

或者

\section{A section}
\MyMacro[1]{First}
hello

明确指定父级。


参考:

答案2

与等相反article,如果没有父类,该类将不起作用,这就是出现错误消息的原因。bookbeamer\subsection\section\Parent2

只需使用\section之前\MyMacro(鉴于\MyMacro确实需要!)

\documentclass{beamer}


\usepackage{xifthen}

\newcommand{\MyMacro}[2][]{%
  \ifthenelse{%
    \isempty{#1}%
  }{%
    \subsection{empty}%
  }{%
    \subsection{NOT empty}%
  }%
}
\begin{document}

\section{Foo}
\MyMacro[1]{First}

\MyMacro{First}

hello
\end{document}

相关内容