リスト用の \graphicspath に相当するものはありますか?

リスト用の \graphicspath に相当するものはありますか?

特定のディレクトリ内のファイルを検索するにはどうすればいいでしょうか\lstinputlisting?私は次のような解決策を考えています。この質問

私は次のような解決策を望んでいます

\lstinputpath{/some/path/in/the/system}
\lstinputlisting{file.ext}

file.extに存在します/some/path/in/the/system。私はそのような解決策を探してみましたが、うまくいきませんでした。 の定義内で、\lstinputlistings著者は を使用していることがわかりました\lst@inputpath。ただし、このマクロを単純に変更しても結果は得られません。

答え1

パッケージには、ソースファイルを検索するパスを指定するためのlistingsキーが用意されています。開発者ガイドにのみ記載されていることに注意してください。inputpath\lstinputlistinginputpathlistingsないユーザーマニュアルを参照してください。開発者ガイドをコンパイルしていない場合は、リスト.dtxはキーの定義に繋がりますinputpath。後者を使うには、単に次のように書きます。

\lstset{inputpath=<path-in-question>}

文書内のどこかに(プリアンブル内である必要はなく、listingsもちろん を読み込んだ後に)マ​​クロを記述します。 に似たマクロをどうしても使いたい場合は、次のように自分でマクロを\graphicspath定義することができます。\lstinputpath

\newcommand*\lstinputpath[1]{\lstset{inputpath=#1}}

以下のコードでは、ファイルが作業ディレクトリの というsample.cサブディレクトリに存在することを前提としています。test

ここに画像の説明を入力してください

\documentclass{article}

\usepackage{listings}

\newcommand*\lstinputpath[1]{\lstset{inputpath=#1}}

\lstinputpath{test}

\begin{document}
\lstinputlisting[
  language   = C,
  basicstyle = \ttfamily,
  frame      = single,
  caption    = {Hello world in C},
]{sample.c}
\end{document}

答え2

\input@path代替案としては、LaTeX 内部マクロの使用があります。

参照https://tex.stackexchange.com/a/24827/250119\graphicspath{...} と同様に、\input{...} のデフォルト パスをグローバルに設定できますか?

例えば

\documentclass{article}
\usepackage{listings}

\makeatletter
\def\input@path{{SubFolder/}}
\makeatother

\begin{document}
\lstinputlisting[
  language   = C,
  basicstyle = \ttfamily,
  frame      = single,
  caption    = {Hello world in C},
]{SubTest.tex}
\end{document}

アドバンテージ: 動作し、複数のパスをサポートし、前述の欠点に悩まされることはありません。上記のコメント

ここで注意すべき重要な欠点の 1 つは、指定された引数にスラッシュが含まれている場合でも (また、スラッシュで始まる場合、つまり絶対パスの場合であっても)、入力パスが常に先頭に追加されることです。

不利益:

  • 私が見る限り、\input@pathこれはLaTeXの内部マクロであり、オリジナル目的は、ユーザーが ... の可能な場所を拡張できるようにすることではありませんか\input? (詳細は後述)
  • listingsこれはパッケージのドキュメントがあるためにのみ機能しますたまたま内部的に使用して\inputファイルを内部的に処理します。そうしないと動作しません。

リスト ソースコード ドキュメント

(ちなみに、\active定数 13 を表すために を使用することは、\endlinechar自己文書化コードとは逆です。)

関連情報