![リスト用の \graphicspath に相当するものはありますか?](https://rvso.com/image/286965/%E3%83%AA%E3%82%B9%E3%83%88%E7%94%A8%E3%81%AE%20%5Cgraphicspath%20%E3%81%AB%E7%9B%B8%E5%BD%93%E3%81%99%E3%82%8B%E3%82%82%E3%81%AE%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B%3F.png)
特定のディレクトリ内のファイルを検索するにはどうすればいいでしょうか\lstinputlisting
?私は次のような解決策を考えています。この質問。
私は次のような解決策を望んでいます
\lstinputpath{/some/path/in/the/system}
\lstinputlisting{file.ext}
はfile.ext
に存在します/some/path/in/the/system
。私はそのような解決策を探してみましたが、うまくいきませんでした。 の定義内で、\lstinputlistings
著者は を使用していることがわかりました\lst@inputpath
。ただし、このマクロを単純に変更しても結果は得られません。
答え1
パッケージには、ソースファイルを検索するパスを指定するためのlistings
キーが用意されています。開発者ガイドにのみ記載されていることに注意してください。inputpath
\lstinputlisting
inputpath
listings
ないユーザーマニュアルを参照してください。開発者ガイドをコンパイルしていない場合は、リスト.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
自己文書化コードとは逆です。)