Paquete LaTeX Minted usando directorio de salida personalizado = compilación

Paquete LaTeX Minted usando directorio de salida personalizado = compilación

Dado el siguiente documento LaTeX ( minimal.tex):

\documentclass{article}
\usepackage{minted}
\begin{document} 
\begin{minted}{c} 
int main() {
    printf("hello, world");
    return 0;
}
\end{minted} 
\end{document}

Puedo construirlo con:

pdflatex -shell-escape  minimal.tex

Pero me gustaría poner los archivos de compilación en otro directorio, así que uso -output-directory=build, como:

pdflatex -shell-escape -output-directory=build minimal.tex

Pero de esta manera obtengo:

...
(/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}

En minimal.pygrealidad, está dentro builddel directorio, pero parece que no se encuentra.

¿Qué puedo hacer?

Respuesta1

Debes \usepackage[outputdir=build]{minted}decirle a Minted dónde fueron los archivos.

Respuesta2

Puede usar currfile-abspath(un subpaquete de currfile) para configurar el directorio de salida de Minted automáticamente. Debe hacerse antes de cargar el mintedpaquete.

\usepackage{currfile-abspath}
\getabspath{\jobname.log}
\ifthenelse{\equal{\theabsdir}{\thepwd}}% using ifthen package
%\ifdefstrequal{\theabsdir}{\thepwd}% using etoolbox package
    {}{\PassOptionsToPackage{outputdir=\theabsdir}{minted}}

Aparentemente no funciona de manera confiable con MiKTeX, consultehttps://github.com/gpoore/minted/issues/268

Respuesta3

Espero que a los lectores no les importe que amplíe la respuesta de David Carlisle. He visto la pregunta formulada de muchas maneras a lo largo de los años. Sin embargo, no veo mención a la importancia del proyecto.caminoal cargar el paquete Minted.

Como desarrollador y escritor individual, recientemente cambié de TexStudio para probar el complemento TeXiFy para IntelliJ IDEA. Escribo en ese contexto. No estoy asociado con esos productos.

Resuelvo las excepciones de la lista de códigos Minted configurando\usepackage[outputdir=../auxil]{acuñado}.

Minted.stySe basa en el paquete Python Pygments y en su archivo de salida auxiliar de etapa intermedia durante la compilación. El proceso: cargar paquetes Latex, comenzar a compilar, compilar fragmentos de código con el paquete Minted en un archivo de compilación intermedio .pyg<...>, recopilar el archivo durante la salida PDF, completar el procesamiento de salida PDF. Si el .pyg<...> intermedio no está en la carpeta esperada, se producirá una excepción de salida de PDF.

La compilación de código con el paquete Latex minted.sty se ajusta a una estructura de carpetas predeterminada basada en la raíz. Dondequiera que se encuentre el proyecto en una jerarquía de carpetas, ese es el valor predeterminado. El complemento TeXiFy predeterminado no lo hace: se ajusta a las estructuras predeterminadas de IntelliJ IDEA Ultimate (o el IDE de su elección), que inevitablemente cumplirá, al igual que los complementos. En consecuencia, cuando se compila el complemento TeXiFy IDEA, busca un archivo .pyg<...> en el lugar equivocado. De forma predeterminada, aquí está la estructura compilada para el MWE simple a continuación...

jerarquía-de-dirección-de-salida acuñada

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}
}

Produce excepción...

Error: no se puede leer el archivo interno: [Errno 2] No existe tal archivo o directorio: 'minted-mwe.pyg' No se pudo encontrar P:\Writing-and-WritingSoftware\DevelopmentBooklets\VanElectrical\TexifyMintedTest\src_minted-minted-mwe\097AF5BD36CFF0D87D9991A6653D1FBAC2C2A1FBB8430C 5273284E8D3B9D57CD.pygtex

Eso es correcto. El archivo .pyg<...> NO debe buscarse en \TexifyMintedTest\srccarpeta, esta en\auxiliarcarpeta.

Al cambiar eldirectorio de salidacarpetausando la ruta de archivo correctaal cargar minted.sty, el proceso de compilación buscará el archivo .pyg<...> en el lugar correcto...

acuñado-outputdir tex

HTH no expertos...

información relacionada