为什么“shellesc”与“tabularx”冲突以及如何解决?

为什么“shellesc”与“tabularx”冲突以及如何解决?

这是可以正常工作的代码:

\documentclass{article}
\usepackage{shellesc}
\begin{document}
\begin{tabular}{lr}
    hello!
    &
    \ShellEscape{/bin/echo 'hello!' > a.tex}
    \input{a}
    \\
\end{tabular}
\end{document}

但是,如果我使用tabularx而不是tabular,编译将在 处停止\input

\documentclass{article}
\usepackage{tabularx}
\usepackage{shellesc}
\begin{document}
\begin{tabularx}{\textwidth}{lr}
    hello!
    &
    \ShellEscape{/bin/echo 'hello!' > a.tex}
    \input{a}
    \\
\end{tabularx}
\end{document}

哪里出了问题以及如何修复?

答案1

下列的大卫·卡莱尔的评论您可以测试文件是否存在,并且仅在存在的情况下输入它。然后表格单元格将在最后一次运行中被填充。

\documentclass{article}
\usepackage{tabularx}
\usepackage{shellesc}
\begin{document}
\begin{tabularx}{\textwidth}{lr}
    hello!
    &
    \ShellEscape{/bin/echo 'hello!' > a.tex}
    \IfFileExists{./a.tex}{\input{a}}{}
    \\
\end{tabularx}
\end{document}

相关内容