提前查看标记流?

提前查看标记流?

是否可以进行宏检查,如果它遵循给定的标记模式并根据它产生不同的扩展?

到目前为止我已经尝试使用如下代码

\def\conditionalAction#1#2{
   \def\ca@tokens{{#1}{#2}}
   \def\ca@match{{\begin}{someenv}}
   \ifx\ca@tokens\ca@match                
     Matched.
   \else                                 
     Not matched.
   \fi
   #1#2%
}

但这有几个严重的局限性:

  1. 如果在文件末尾附近使用,则会导致错误File ended while scanning use of \conditionalAction。当使用此类模式迭代文件时,这一点很重要。
  2. 如果或是#1一个#2token ,它实际上会中断团体。例如它将转变\begin{stuff}\begin stuff,这是错误的。

解决方法部分可行但不切实际。例如,可以通过要求每个文件都以某个结束标记结尾来修复 (1),并且如果丢弃与之比较的参数,则 (2) 不相关。

当前用例

虽然这个问题比较笼统,以供将来参考,但我目前的用例是迭代一个输入文件,同时丢弃任何不是在给定环境中。这个想法是提供一种机制,允许将内容的输出延迟到稍后的点(如包apxproof,但不破坏 synctex)。现在我正在使用一个构造

\expandafter\SomeProcessFileMacro\@@input\InputFileNameAsMacro

where\SomeProcessFileMacro跳过(使用类似上面的模式\conditionalAction)直到找到序列\begin{apxenv},然后再次被 调用\end{apxenv}。这基本上可以正常工作并按预期保留 synctex,但我缺少在文件末尾停止的机制。

问题SyncTeX 带有尾注和 apxproof 包吗?Synctex:文件名和行号的变量?是相关的,但我尝试从其他角度来解决这个问题。

相关内容