有没有办法告诉minted
从某个目录导入代码片段?我正在寻找类似于\graphicspath{{img/}}
图像的方法。
现在,我需要导入的所有文件都与我的其他.tex
文件混合在一起。
答案1
此功能在当前版本中不可用minted
。\inputminted
恐怕无法重新定义,因为根据draft
开启或关闭,它具有不同的定义。
无论如何,你可以很容易地定义一个包装器\inputminted
。的语法\pathinputminted
与以下相同\inputminted
:
\pathinputminted[<options>]{<language>}{<filename>}
完整代码
\documentclass{article}
\usepackage{minted}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\mintedpath}{m}
{
\seq_gset_split:Nnn \g_paulie_mintedpath_seq { } { #1 }
\seq_gput_left:Nn \g_paulie_mintedpath_seq { }
}
\seq_new:N \g_paulie_mintedpath_seq
\NewDocumentCommand{\pathinputminted}{O{}mm}
{
\seq_map_inline:Nn \g_paulie_mintedpath_seq
{
\file_if_exist:nT { ##1 #3 }
{
\inputminted[#1]{#2}{##1 #3}
\seq_map_break:
}
}
}
\ExplSyntaxOff
\mintedpath{ {sub1/} {sub2/} }
\begin{document}
\pathinputminted{latex}{test1.tex} % this is only in sub1
\pathinputminted{latex}{test2.tex} % this is both in sub1 and sub2
\pathinputminted{latex}{test3.tex} % this is only in sub2
\pathinputminted{latex}{test4.tex} % this is both in current directory and sub1
\end{document}
这是我为了示例而设置的目录结构,文档已经排版一次,因此 Pygments 文件已经显示出来。
paulie > ls -R
_minted-paulie/ paulie.log paulie.tex sub2/
paulie.aux paulie.pdf sub1/ test4.tex
./_minted-paulie:
24A365234AE4FDB0DF45E303775CC522F86A94839C3F0079C692F025CF998383.pygtex
4CF555EB3B29AA33E0D843E51AE34A9128809557B179BB64CA75D7BABAABEFE2.pygtex
D3967FFDA37461EF76D39CC2F8B40FCC93A75DBBC5197FD7555A181B29CF5ABC.pygtex
FD1CB1B77BD8698379A00F3A3BED29F678CA5D356D6BB9C6FD6DCBC2BA6DFEA3.pygtex
default-pyg-prefix.pygstyle
default.pygstyle
./sub1:
test1.tex test2.tex
./sub2:
test2.tex test3.tex test4.tex
从输出中可以看到
仅输入第一个匹配项。我./
在搜索路径的开头添加了一个隐式搜索,因此首先会找到工作目录中的文件,并且与其他情况一样,不会执行进一步的搜索。
答案2
您可以使用 来完成\inputminted[<options>]{<language>}{<filename>}
。
您可以在其中<filename>
指示完整路径(请记住,对于 Windows 路径也使用\
(而不是)。/
如果要设置固定路径,可以简单地创建一个新命令,例如:
\documentclass{article}
\usepackage{minted}
\newcommand{\myminted}[1]{\inputminted{latex}{/my/dir/#1}}
\begin{document}
\myminted{main.tex}
\end{document}