
Дан следующий документ LaTeX ( minimal.tex
):
\documentclass{article}
\usepackage{minted}
\begin{document}
\begin{minted}{c}
int main() {
printf("hello, world");
return 0;
}
\end{minted}
\end{document}
Я могу построить это с помощью:
pdflatex -shell-escape minimal.tex
Но я хотел бы поместить файлы сборки в другой каталог, поэтому я использую -output-directory=build
, например:
pdflatex -shell-escape -output-directory=build minimal.tex
Но таким образом я получаю:
...
(/usr/local/texlive/2016/texmf-dist/tex/latex/xcolor/xcolor.sty
(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics-cfg/color.cfg)
(/usr/local/texlive/2016/texmf-dist/tex/latex/pdftex-def/pdftex.def
(/usr/local/texlive/2016/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
[Loading MPS to PDF converter (version 2006.09.02).]
))) (./_minted-minimal/default-pyg-prefix.pygstyle)Error: cannot read infile: [Errno 2] No such file or directory: 'minimal.pyg'
system returned with code 256
! Package minted Error: Missing Pygments output; \inputminted was
probably given a file that does not exist--otherwise, you may need
the outputdir package option, or may be using an incompatible build tool.
See the minted package documentation for explanation.
Type H <return> for immediate help.
...
l.9 \end{minted}
На самом деле он minimal.pyg
находится внутри build
каталога, но, похоже, его не удается найти.
Что я могу сделать?
решение1
Вам нужно \usepackage[outputdir=build]{minted}
сообщить minted, куда делись файлы.
решение2
Вы можете использовать currfile-abspath
(подпакет currfile
) для автоматической установки выходного каталога minted. Это необходимо сделать до загрузки minted
пакета.
\usepackage{currfile-abspath}
\getabspath{\jobname.log}
\ifthenelse{\equal{\theabsdir}{\thepwd}}% using ifthen package
%\ifdefstrequal{\theabsdir}{\thepwd}% using etoolbox package
{}{\PassOptionsToPackage{outputdir=\theabsdir}{minted}}
По-видимому, не работает надежно с MiKTeX, см.https://github.com/gpoore/minted/issues/268
решение3
Надеюсь, читатели не будут возражать, если я расширю ответ Дэвида Карлайла. Я видел, как этот вопрос задавали разными способами на протяжении многих лет. Однако я не вижу упоминания о важности проектапутьпри загрузке пакета Minted.
Как индивидуальный разработчик и писатель я недавно перешел с TexStudio на плагин TeXiFy для IntelliJ IDEA. Я пишу в этом контексте. Я не связан с этими продуктами.
Я разрешаю исключения листинга кода Minted, устанавливая\usepackage[outputdir=../auxil]{отчеканено}.
Minted.styопирается на пакет Python Pygments и его промежуточный вспомогательный выходной файл во время компиляции. Процесс: загрузка пакетов Latex, начало компиляции, компиляция фрагментов кода с пакетом Minted в промежуточный файл компиляции .pyg<...>, сбор файла во время вывода PDF, завершение обработки вывода PDF. Если промежуточный .pyg<...> отсутствует в ожидаемой папке, возникнет исключение вывода PDF.
Компиляция кода с пакетом Latex minted.sty соответствует структуре папок по умолчанию на основе корня. Где бы проект ни находился в иерархии папок, это и есть структура по умолчанию. Плагин TeXiFy по умолчанию не соответствует структурам по умолчанию IntelliJ IDEA Ultimate (или вашей IDE по выбору), которым он неизбежно обязан соответствовать, как и плагины. Соответственно, когда плагин TeXiFy IDEA компилируется, он ищет файл .pyg<...> в неправильном месте. По умолчанию ниже приведена скомпилированная структура для простого MWE...
Использование латекса...
\documentclass[11pt]{article}
% Packages
\usepackage{minted}
% Document
\begin{document}
\begin{minted}{php}
<?php
$x = 1;
if($x=1){
echo "x=1";
} else {
echo "x=" . $x;
}
?>
\end{minted}
\end{document}
}
Это создает исключение...
Ошибка: невозможно прочитать входящий файл: [Errno 2] Такого файла или каталога нет: 'minted-mwe.pyg' Не удалось найти P:\Writing-and-WritingSoftware\DevelopmentBooklets\VanElectrical\TexifyMintedTest\src_minted-minted-mwe\097AF5BD36CFF0D87D9991A6653D1FBAC2C2A1FBB8430C5273284E8D3B9D57CD.pygtex
Это верно. Файл .pyg<...> НЕ следует искать в \TexifyMintedTest\источникпапка, она находится в\вспомогательныйпапка.
Изменяяoutputdirпапкаиспользуя правильный путь к файлупри загрузке minted.sty процесс компиляции будет искать файл .pyg<...> в правильном месте...
HTH неспециалисты...