\从目录中输入未指定的文件

\从目录中输入未指定的文件

我希望能够仅通过说明目录名称来输入文件。

将会有一个包含几个 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 和不受限制的模式。

相关内容