SyncTeX가 환경 내에서 텍스트로 작동하도록 변경 되었습니까?

Nov 19 2020

SyncTeX가 Beamer에서 올바르게 작동하지 않는다는 것을 알고 있습니다 ( beamer에서 Inverse PDF Search 참조 ).

하지만로 정의 된 환경에서 역 검색에도 문제가있는 것 같습니다 \NewEnviron.

나는 다음과 같이 부르고 싶다.

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

환경 일 필요는 없습니다. 하지만 \BODY에서 \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에 대해 작동하지 않습니다. 저에게는 원본 텍스트 본문을 바꿀 수있는 것이 중요합니다.

답변

marli Nov 23 2020 at 16:29

우리는 그것을 실현할 수 \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에서도 작동합니다.