排除的 `\marginpar{}` 导入另一个文件时编译失败

排除的 `\marginpar{}` 导入另一个文件时编译失败

这是另一个基于的后续问题(使用修改后的 MWE回答)



情况

我正在将一个文件的几个部分导入另一个文件(摘要摘录)。这是使用 touhami 在两个链接问题中描述的方法完成的。

问题

如何使用\marginpar{}此排除方法?

当我尝试编译一个文件并加载另一个包含\marginpar{}排除部分的文件时,它会失败。比较 MWE:newfile.tex由于\begin{mtexclude} \marginpar{...} \end{mtexclude}而失败file.tex


平均能量损失(比较链接的帖子)

文件.tex

\documentclass{amsart}

\newenvironment{mtexclude}{}{}
\begin{document}
    First bla bla
    %<*tag>
    \section{Foo}
    \begin{mtexclude}% begin of part to skiped
        this works just fine
    \end{mtexclude}%   end
    works fine aswell
    \begin{mtexclude}% this exclude does not work
        this works only in the main ``file.tex''
        \marginpar{
        this causes the error in compilation of newfile.tex
        }
    \end{mtexclude}

    The end
    %</tag>
    Last bla bla
\end{document}

新文件.tex

\documentclass{amsart}
\usepackage{lipsum}

\usepackage{catchfilebetweentags}
\newtoks\temptoken
\newbox\mtbox
\makeatletter
\newenvironment{mtexclude}{%
    \setbox\mtbox\vbox\bgroup%
    \def\@float##1{\def\@captype{##1}}%
    \let\end@float\relax%
}{\egroup}
\makeatother

\begin{document}
\lipsum[1]
\CatchFileBetweenTags\temptoken{file}{tag}
\the\temptoken

\end{document}

答案1

您需要重新定义\marginpar为不执行任何操作(与图形和表格相同),因此我们需要执行

\newenvironment{mtexclude}{%
    \setbox\mtbox\vbox\bgroup%
    \def\marginpar{}%
    \def\@float##1{\def\@captype{##1}}%
    \let\end@float\relax%
}{\egroup}

笔记请小心,内部mtexclude柜台风格工作尝试与\section{foo}内部mtexclude\section{bar}外部相结合。


平均能量损失

\documentclass{amsart}
\usepackage{lipsum}

\usepackage{catchfilebetweentags}
\newtoks\temptoken
\newbox\mtbox
\makeatletter
\newenvironment{mtexclude}{%
    \setbox\mtbox\vbox\bgroup%
    \def\marginpar{}%
    \def\@float##1{\def\@captype{##1}}%
    \let\end@float\relax%
}{\egroup}
\makeatother

\begin{document}
\lipsum[1]
\CatchFileBetweenTags\temptoken{file}{tag}
\the\temptoken

\end{document}

相关内容