カスタム output-directory=build を使用した LaTeX Minted パッケージ

カスタム output-directory=build を使用した LaTeX Minted パッケージ

次の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 から IntelliJ IDEA 用の TeXiFy プラグインに変更しました。私はそのコンテキストで執筆しています。私はそれらの製品とは関係ありません。

Mintedコードリスト例外を解決するには、\usepackage[出力ディレクトリ=../auxil]{ミント}

ミント.styPython Pygments パッケージと、コンパイル中の中間段階の補助出力ファイルに依存します。プロセス: Latex パッケージをロードし、コンパイルを開始し、Minted パッケージを使用してコード フラグメントを中間コンパイル ファイル .pyg<...> にコンパイルし、PDF 出力中にファイルを収集し、PDF 出力処理を完了します。中間 .pyg<...> が予想されるフォルダーにない場合、PDF 出力例外が発生します。

Latex minted.sty パッケージでコードをコンパイルすると、デフォルトのルートベースのフォルダー構造に準拠します。プロジェクトがフォルダー階層のどこにあっても、それがデフォルトです。デフォルトの TeXiFy プラグインはそうではありません。プラグインと同様に、必然的に従わなければならない IntelliJ IDEA Ultimate のデフォルト構造 (または選択した IDE) に準拠します。したがって、TeXiFy IDEA プラグインがコンパイルされると、間違った場所で .pyg<...> ファイルを探します。デフォルトでは、以下は単純な MWE のコンパイルされた構造です...

minted-outputdir 階層

Latex の使用...

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

例外が発生します...

エラー: infile を読み取れません: [Errno 2] そのようなファイルまたはディレクトリはありません: 'minted-mwe.pyg' P:\Writing-and-WritingSoftware\DevelopmentBooklets\VanElectrical\TexifyMintedTest\src_minted-minted-mwe\097AF5BD36CFF0D87D9991A6653D1FBAC2C2A1FBB8430C5273284E8D3B9D57CD.pygtex が見つかりませんでした

正解です。.pyg<...> ファイルは \TexifyMintedTest\ の下で検索されるべきではありません。ソースフォルダ内にある\補助フォルダ。

変更することで出力ディレクトリフォルダ正しいファイルパスを使用するminted.sty をロードすると、コンパイル プロセスは正しい場所で .pyg<...> ファイルを探します...

minted-outputdir tex

HTH 非専門家...

関連情報