
Dado o seguinte documento LaTeX ( minimal.tex
):
\documentclass{article}
\usepackage{minted}
\begin{document}
\begin{minted}{c}
int main() {
printf("hello, world");
return 0;
}
\end{minted}
\end{document}
Posso construí-lo com:
pdflatex -shell-escape minimal.tex
Mas eu gostaria de colocar os arquivos de compilação em outro diretório, então uso -output-directory=build
, como:
pdflatex -shell-escape -output-directory=build minimal.tex
Mas desta forma eu consigo:
...
(/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}
Na minimal.pyg
verdade, está dentro build
do diretório, mas parece não ter sido encontrado.
O que posso fazer?
Responder1
Você precisa \usepackage[outputdir=build]{minted}
informar ao minted para onde foram os arquivos.
Responder2
Você pode usar currfile-abspath
(um subpacote de currfile
) para definir o diretório de saída do minted automaticamente. Deve ser feito antes de carregar o minted
pacote.
\usepackage{currfile-abspath}
\getabspath{\jobname.log}
\ifthenelse{\equal{\theabsdir}{\thepwd}}% using ifthen package
%\ifdefstrequal{\theabsdir}{\thepwd}% using etoolbox package
{}{\PassOptionsToPackage{outputdir=\theabsdir}{minted}}
Aparentemente não funciona de forma confiável com o MiKTeX, vejahttps://github.com/gpoore/minted/issues/268
Responder3
Espero que os leitores não se importem que eu expanda a resposta de David Carlisle. Já vi essa pergunta ser feita de muitas maneiras ao longo dos anos. No entanto, não vejo menção à importância do projetocaminhoao carregar o pacote Minted.
Como desenvolvedor e escritor individual, mudei recentemente do TexStudio para experimentar o plugin TeXiFy para IntelliJ IDEA. Escrevo nesse contexto. Não estou associado a esses produtos.
Eu resolvo exceções de listagem de código Minted definindo\usepackage[outputdir=../auxil]{cunhado}.
Cunhado.stydepende do pacote Python Pygments e é um arquivo de saída auxiliar de estágio intermediário durante a compilação. O processo: carregar pacotes Latex, começar a compilar, compilar fragmentos de código com o pacote Minted em um arquivo de compilação intermediário .pyg<...>, coletar o arquivo durante a saída do PDF, concluir o processamento da saída do PDF. Se o intermediário .pyg<...> não estiver na pasta esperada, ocorrerá uma exceção de saída em PDF.
A compilação do código com o pacote Latex minted.sty está em conformidade com uma estrutura de pastas padrão baseada em raiz. Onde quer que o projeto esteja em uma hierarquia de pastas, esse é o padrão. O plug-in TeXiFy padrão não --- ele está em conformidade com as estruturas padrão do IntelliJ IDEA Ultimate (ou o IDE de sua escolha), que é inevitavelmente obrigado a cumprir, como fazem os plug-ins. Conseqüentemente, quando o plugin TeXiFy IDEA é compilado, ele procura um arquivo .pyg<...> no lugar errado. Por padrão, aqui está a estrutura compilada para o MWE simples abaixo...
Usando látex...
\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}
}
Produz exceção...
Erro: não é possível ler o arquivo: [Errno 2] Nenhum arquivo ou diretório: 'minted-mwe.pyg' Não foi possível encontrar P:\Writing-and-WritingSoftware\DevelopmentBooklets\VanElectrical\TexifyMintedTest\src_minted-minted-mwe\097AF5BD36CFF0D87D9991A6653D1FBAC2C2A1FBB8430C5 273284E8D3B9D57CD.pygtex
Está correto. O arquivo .pyg<...> NÃO deve ser procurado em \TexifyMintedTest\fontepasta, está em\auxilpasta.
Ao alterar odiretório de saídapastausando o caminho de arquivo corretoao carregar o minted.sty, o processo de compilação irá buscar o arquivo .pyg<...> no local correto...
Não especialistas em HTH...