这是可以正常工作的代码:
\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}