如何使 \only 之类的宏在行尾使用并将其转义?

如何使 \only 之类的宏在行尾使用并将其转义?

我想制作一个教程,逐步展示代码及其渲染输出。要求如下。

  • 源代码应该保持简单。

    \LTXexample
      \begin{tikzpicture}%\only<1->
         \draw (-1.5,0) -- (1.5,0);%\pause
         \draw (0,-1.5) -- (0,1.5);
      \end{tikzpicture}%\only<1->
    \endLTXexample
    

    优先于

    \LTXexample
     \only<1->{\begin{tikzpicture}}\pause
        \draw (-1.5,0) -- (1.5,0);\pause
        \draw (0,-1.5) -- (0,1.5);
     \only<1->{\end{tikzpicture}}
    \endLTXexample
    
  • 之后定义的宏% 必须转义才能允许覆盖。

  • %格式化的代码中一定不能打印字符,因为它们会增加代码的复杂性并分散读者的注意力。

输出应该如下所示,但必须删除任何内容,并且源代码应该仅由末尾的类似宏\only<1->{}来分隔,而不是用繁琐的括起来。\only\only<1->{}

在此处输入图片描述

\documentclass{beamer}
\usepackage{tikz}
\usepackage{showexpl}
\lstset
{
    breaklines=true,
    pos=r,
    basicstyle=\tt\scriptsize,
    numbers=none,
    preset=\centering,
    texcl=true,
}
\begin{document}
\begin{frame}[fragile]{Picture for Karl's students}
\LTXexample
\only<1->{\begin{tikzpicture}}\pause
    \draw (-1.5,0) -- (1.5,0);\pause
    \draw (0,-1.5) -- (0,1.5);
\only<1->{\end{tikzpicture}}
\endLTXexample

\end{frame}
\end{document}

如何实现这个呢?

答案1

为了使注释字符不可见%,一个简单的方法是用背景颜色渲染它们(commentstyle=\color{white})。但是,我还没有明白这些 \only命令的用途是什么。

\documentclass{beamer}
\usepackage{tikz}
\usepackage{showexpl}
\lstset
{
    breaklines=true,
    pos=r,
    basicstyle=\tt\scriptsize,
    numbers=none,
    preset=\centering,
    texcl=true,
    commentstyle=\color{white}
}
\begin{document}
\begin{frame}[fragile]{Picture for Karl's students}
\LTXexample
\begin{tikzpicture}%\pause
    \draw (-1.5,0) -- (1.5,0);%\pause
    \draw (0,-1.5) -- (0,1.5);
\end{tikzpicture}
\endLTXexample

\end{frame}
\end{document}

答案2

你现在处于一种矛盾的境地

  • 您使用texcl在注释中运行代码
  • 但你想隐藏打开评论的标志

好的一面是:你只需要欺骗他们listings.sty就可以做你想做的事。

此处的一个快速方法是进行操纵,listings使其认为 [TAB] 位于注释之前,即以已经不可见的字符开始注释。

另一方面,无论您想在何处显示代码,都必须用空格替换制表符。

相关内容