是否有机会让 SyncTeX 在环境中处理文本?

是否有机会让 SyncTeX 在环境中处理文本?

我知道 SyncTeX 在 Beamer 中无法正常工作(请参阅在 Beamer 中反向 PDF 搜索)。

但是在用 定义的环境中,逆向搜索似乎也存在问题\NewEnviron

我想这样称呼:

\begin{foo}{x}{y}
bla bla
\end{foo}

它不需要是一个环境。但我不知道该用什么,因为我想控制 body,这在\BODYin 中是可能的\NewEnviron,但在 中是不可能的\newenvironment

那么是否可以定义一个类似环境的东西,其中 SyncTeX 指向环境中的文本而不是环境的末尾?

itemize环境中它似乎有效。有人知道它在那里是如何实现的吗?

例子:

\documentclass{letter}
\usepackage{environ}

\newif\ifshow

\NewEnviron{foo}[3]{
\ifshow
    #1\\
    \BODY
    -----------
\else
  Alert #1 #2 #3
\fi
}

\begin{document}
\begin{foo}{hide}{1}{2}
hidden Text
\end{foo}

\showtrue

\begin{foo}{show}{2}{1}
\begin{itemize}
    \item a
    \item b
    \item c
\end{itemize}
\end{foo}

\begin{itemize}
    \item d
    \item e
    \item f
\end{itemize}

\end{document}

对于 a、b、c 逆向搜索不起作用,但对于 d、e、f 则起作用。对我来说,重要的是原始文本主体可以被替换。

答案1

\newenvironment我们可以通过和\comment来实现它verbatim

\documentclass{letter}
\usepackage{verbatim}

\newif\ifshow

\newenvironment{foo}[3]{
 \ifshow
    #1\\
 \else
    \def\a{#1}
    \def\b{#2}
    \def\c{#3}
    \expandafter\comment
 \fi
}
{
 \ifshow
    -----------
 \else
    \expandafter\endcomment
    Alert \a~\b~\c
 \fi
}

\begin{document}
\begin{foo}{hide}{1}{2}
hidden Text
\end{foo}

\showtrue

\begin{foo}{show}{2}{1}
\begin{itemize}
    \item a
    \item b
    \item c
\end{itemize}
\end{foo}

\begin{itemize}
    \item d
    \item e
    \item f
\end{itemize}

\end{document}

然后逆向搜索也对 a、b 和 c 起作用。

相关内容