是否可以进行宏检查,如果它遵循给定的标记模式并根据它产生不同的扩展?
到目前为止我已经尝试使用如下代码
\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%
}
但这有几个严重的局限性:
- 如果在文件末尾附近使用,则会导致错误
File ended while scanning use of \conditionalAction
。当使用此类模式迭代文件时,这一点很重要。 - 如果或是
#1
一个#2
token ,它实际上会中断团体。例如它将转变\begin{stuff}
为\begin stuff
,这是错误的。
解决方法部分可行但不切实际。例如,可以通过要求每个文件都以某个结束标记结尾来修复 (1),并且如果丢弃与之比较的参数,则 (2) 不相关。
当前用例
虽然这个问题比较笼统,以供将来参考,但我目前的用例是迭代一个输入文件,同时丢弃任何不是在给定环境中。这个想法是提供一种机制,允许将内容的输出延迟到稍后的点(如包apxproof
,但不破坏 synctex)。现在我正在使用一个构造
\expandafter\SomeProcessFileMacro\@@input\InputFileNameAsMacro
where\SomeProcessFileMacro
跳过(使用类似上面的模式\conditionalAction
)直到找到序列\begin{apxenv}
,然后再次被 调用\end{apxenv}
。这基本上可以正常工作并按预期保留 synctex,但我缺少在文件末尾停止的机制。
问题SyncTeX 带有尾注和 apxproof 包吗?和Synctex:文件名和行号的变量?是相关的,但我尝试从其他角度来解决这个问题。