我希望能够仅通过说明目录名称来输入文件。
将会有一个包含几个 tex 文件的目录“mydir”,我希望能够输入:
\输入{我的目录}
并选择一些 *.tex 文件并将其放入我的文档中。
答案1
您可以使用 LuaLaTeX 来实现:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{fontspec}
\usepackage{luacode}
\begin{luacode*}
function input_dir(dir)
local p = io.popen('find "./'..dir..'" -type f -name "*.tex"')
for file in p:lines() do
print("Ajout de "..file)
tex.print("\\input{"..file.."}")
end
end
\end{luacode*}
\begin{document}
\directlua{input_dir("mydir")}
\end{document}
使用以下方法编译lualatex --shell-escape yourfile.tex
答案2
你可以尝试texosquery
如果您已安装 Java。
示例(子目录名为subdir
):
\documentclass{article}
\usepackage{texosquery}
\makeatletter
% \inputfiles{dir}
\newcommand*{\inputfiles}[1]{%
\TeXOSQueryRegularFileList{\result}{,}{#1}%
\ifx\result\empty
Query failed!
\else
\@for\thisfile:=\result\do{\input{#1/\thisfile}}%
\fi
}
\makeatother
\begin{document}
\inputfiles{subdir}
\end{document}
这将输入子目录中的所有常规文件。或者,您可以应用过滤器:
\documentclass{article}
\usepackage{texosquery}
\makeatletter
% \inputfiles{dir}
\newcommand*{\inputfiles}[1]{%
\TeXOSQueryFilterFileList{\result}{,}{.+\string\.tex}{#1}%
\ifx\result\empty
Query failed!
\else
\@for\thisfile:=\result\do{\input{#1/\thisfile}}%
\fi
}
\makeatother
\begin{document}
\inputfiles{subdir}
\end{document}
这将只匹配以 结尾的文件.tex
。
注意:texosquery
首次使用前可能需要进行一些设置。texosquery.cfg
您的 TeX 发行版中应该有一个名为的文件,其中包含有关如何设置的说明。如果您使用的是 Java 8(特别是如果您想将其与受限 shell 转义一起使用)或 Java 5 或 6,则需要对其进行编辑。默认设置仅适用于 Java 7 和不受限制的模式。