為什麼「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}

相關內容