Есть ли способ указать 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>
вы можете указать полный путь (не забудьте использовать \
(not /
) также для путей Windows).
Если вы хотите задать фиксированный путь, вы можете просто создать новую команду, например:
\documentclass{article}
\usepackage{minted}
\newcommand{\myminted}[1]{\inputminted{latex}{/my/dir/#1}}
\begin{document}
\myminted{main.tex}
\end{document}