作为后续行动这个问题
情况
我想从我已 TeX 处理的脚本中创建一个摘录,作为最重要的陈述(定理和定义)的概要。
我试图以保留原始编号的方式导入文件的各个部分(如上面提到的问题),这就是 MWE 导入全部但不打印某些部分的原因。
为了使导入更容易,我更喜欢一种(或两种)类型的标签:%<*include> ... %</include>
(& %<*exclude> ... %</exclude>
)。在缩短版本的文件中,我需要一种方法来遍历所有标签并显示一些标签(同时隐藏其他标签)。
这意味着工作量会少很多!有没有办法通过循环、宏或其他包导入来实现这一点?
问题
是否可以使用循环或宏来导入文件的所有标记部分,同时排除其他部分?
笔记:A类似未解答的问题不考虑编号,因此导入方式不同
第一个文件(带标签)
\documentclass{amsart}
\usepackage{lipsum}
\newtheorem{theorem}{Theorem}
\newtheorem{lemma}[theorem]{Lemma}
\theoremstyle{definition}
\newtheorem{definition}[theorem]{Definition}
\newtheorem{example}[theorem]{Example}
\begin{document}
%<*tag>
\lipsum[1]
Here we go
%</tag>
%<*atag>
\begin{definition}
some bla bla
\end{definition}
%</atag>
\begin{theorem}
more bla bla
\end{theorem}
\begin{definition}
some bla bla
\end{definition}
%<*btag>
\begin{definition}
some bla bla
\end{definition}
\begin{theorem}
more bla bla
\end{theorem}
%</btag>
%<*ctag>
\lipsum[1-2]
%</ctag>
%<*dtag>
\begin{lemma}
more bla bla
\end{lemma}
\begin{theorem}
more bla bla
\end{theorem}
%</dtag>
%<*etag>
\lipsum[1-2]
\begin{example}
some bla bla
\end{example}
%</etag>
\begin{theorem}
more bla bla
\end{theorem}
\end{document}
最终文件
\documentclass{amsart}
\usepackage{lipsum}
\usepackage{catchfilebetweentags}
\newtoks\temptoken
\newtheorem{theorem}{Theorem}
\newtheorem{lemma}[theorem]{Lemma}
\theoremstyle{definition}
\newtheorem{definition}[theorem]{Definition}
\newtheorem{example}[theorem]{Example}
\begin{document}
\lipsum[1]
\CatchFileBetweenTags\temptoken{equ}{tag}% capture part1
\setbox0=\vbox{\the\temptoken}% skip part1
\CatchFileBetweenTags\temptoken{equ}{atag}% capture part2
\the\temptoken % display part2
\CatchFileBetweenTags\temptoken{equ}{btag}% capture part3
\setbox0=\vbox{\the\temptoken}% skip part3
\CatchFileBetweenTags\temptoken{equ}{ctag}% capture part4
\setbox0=\vbox{\the\temptoken}% skip part4
\CatchFileBetweenTags\temptoken{equ}{dtag}% capture part5
\the\temptoken% display part5
\end{document}
(有意采用奇数编号!)
答案1
这是一个解决方案。
这里我们需要一个标签tag
并使用新环境mtexclude
:这个环境对原始文件不执行任何操作,对于新文件,它将其内容保存到一个盒子中,\mtbox
因此跳过该内容。
file.tex(原始文件)
\documentclass{amsart}
\usepackage{lipsum}
\newtheorem{theorem}{Theorem}
\newtheorem{lemma}[theorem]{Lemma}
\theoremstyle{definition}
\newtheorem{definition}{Definition}
\newtheorem{example}{Example}
\newenvironment{mtexclude}{}{}
\begin{document}
First bla bla
%<*tag>
\section{Foo}
\subsection{Foo bar}
I need this
\begin{mtexclude}% begin of part to skiped
\section{Baz}
\subsection{Baz bar}
no need for this
\end{mtexclude}% end
\section{End}
\subsection{End bar}
and need this \dots
\begin{mtexclude}% begin of part to skiped
\section{Baz 2}
\subsection{Baz bar 2}
another part to be skiped
\end{mtexclude}% end
The end
%</tag>
Last bla bla
\end{document}
新文件.tex
\documentclass{amsart}
\usepackage{lipsum}
\usepackage{catchfilebetweentags}
\newtoks\temptoken
\newbox\mtbox
\newenvironment{mtexclude}{\setbox\mtbox\vbox\bgroup}{\egroup}
\newtheorem{theorem}{Theorem}
\newtheorem{lemma}[theorem]{Lemma}
\theoremstyle{definition}
\newtheorem{definition}{Definition}
\newtheorem{example}{Example}
\begin{document}
\lipsum[1]
\CatchFileBetweenTags\temptoken{file}{tag}
\the\temptoken
\end{document}