「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}

関連情報