无论出现什么错误,都强制 latex 完成编译?(xelatex)

无论出现什么错误,都强制 latex 完成编译?(xelatex)

我有一个反复出现的问题。

我希望能够强制 latex 完成编译,无论是否出现错误。我知道这个错误会在我的脚本中多次出现,这是 pythontex 包导致的。

我使用 pythontex 包将我在 python 中处理的数据导入到我的报告中。要使用 pythontex,首先要使用 latex 编译 tex 文档(我使用 xelatex),然后使用 pythontex,最后再次使用 latex。因此,我在命令行中运行:

xelatex mydoc.tex
pythontex mydoc.tex
xelatex mydoc.tex

问题是,我希望能够根据从 python 返回的值是大于还是小于零来对它们进行颜色编码。但是,我第一次使用 xelatex(或其他程序)编译我的 tex 文件时,由于尚未运行 pythontex,我传递给函数的 \py{2} 参数colorme为空。这会引发错误,整个过程会停止。

我将创建更多类似的函数,因此colorme我希望有一个包罗万象的解决方案,可以帮助保持乳胶运行,尽管空参数不可避免地会出现错误。

有没有办法强制 latex 完成编译,以便我至少可以运行 pythontex?

\documentclass{article}
\usepackage{pythontex}

%color things red!
\newcommand{\colorme}[1]{

    \ifnum\ifnum\numexpr 0 < #1
        \textcolor{black}{#1}
    \else
        \textcolor{red}{#1} 
    \fi

}

\begin{document}

\colorme{\py{2}}
\colorme{\py{-2}}
\colorme{2}
\colorme{\py{-2}}

\end{document}

答案1

xelatex -help

建议

-interaction=STRING     set interaction mode (STRING=batchmode/nonstopmode/
                          scrollmode/errorstopmode)

你可能想要batchmode,但可能更好的选择是修复你的宏以接受空参数例如

  \ifnum\numexpr 0 < \ifx\valign#1\valign0 \else #1\fi\relax

将进行{}测试0但仍然打印为空。

无论如何你肯定想改变\ifnum\ifnum\ifnum


\documentclass{article}
\usepackage{pythontex}

%color things red!
\newcommand{\colorme}[1]{%
    \ifnum\numexpr 0 < \ifx\valign#1\valign0 \else#1\fi\relax
        \textcolor{black}{#1}%
    \else
        \textcolor{red}{#1}%
    \fi
}

\begin{document}

\colorme{}
\colorme{2}


\end{document}

相关内容