このコマンドは\displaygraphics[width-1in]{figure=some_fig.pdf}
グラフィックを表示します。グラフィック ファイルが利用できないときにタイプセットしたいことがあるので、次のようにします。
\renewcommand{\includegraphics}[1][]{\verb|#2|}
目的は、グラフィックを表示するのではなく、使用するファイルの名前を表示することです。グラフィック名にはアンダースコアが含まれていることに注意してください。これが、verbatim のようなものが必要な理由です。そのため、コマンドは
\renewcommand{\includegraphics}[1][]{#2}
機能しません。
もちろん、\verb
内では をこのように使用できないため、上記の解決策も機能しません\renewcommand
。どうすればよいでしょうか?
答え1
再定義が機能しない理由は、 で間違った数の引数を指定しているためです\renewcommand
。質問を正しく理解していれば、画像のファイル名プレースホルダーが必要なだけでしょう。次に例を示します。
\documentclass{article}
\usepackage[]{graphicx}
\renewcommand\includegraphics[2][]{\begin{center}\texttt{\detokenize{#2}\end{center}}
\begin{document}
\begin{figure}
\includegraphics[width=\linewidth]{Path/to/your/image/file}
\caption{When I finally get the file this will be a cool image}
\end{figure}
\end{document}
あるいは、[demo]
のオプションを使用して、以下のようにgraphicx
任意のコマンドをブラック ボックスに置き換えることもできます\includegraphics
。この場合、もちろんファイル名は出力されませんが、 を再定義する必要もありません\includegraphics
。
答え2
コードにはいくつかのエラーがあります:
\renewcommand{displaygraphics}[1][]{\verb|#2|}
最初の引数は
\renewcommand
マクロ名(バックスラッシュ付き(質問では修正済み))である必要があります。再定義するコマンドは
\includegraphics
(質問で修正済み)引数の数は 1 ではなく 2 である必要があります。別の括弧のペアが続く場合、その内容はオプションの引数のデフォルト値であり、
#1
置換テキストでは で示されます。必須の引数も必要なので、引数は 2 つになります。\verb
別のマクロの引数では使用できません。
解決:
\renewcommand{\includegraphics}[2][]{\texttt{\detokenize{#2}}}
これにより、アンダースコアも許可されます。
答え3
まず最初にチェックして\IfFileExists
、すでに存在する場合は、単純に \includegraphics
、または他の方法で、アンダースコアと長いパスについても、テレタイプ スタイルで\url
? を使用する方がよいでしょうか。
\documentclass[twocolumn]{article}
\usepackage{url}
\usepackage{graphicx}
\parskip1em
\newcommand\extimg[1]{
\IfFileExists{#1}
{\includegraphics[width=.5\linewidth]{#1}}
{\fboxsep1em\fbox{\parbox{\dimexpr.5\linewidth-2em}{\url{#1}}}}}
\begin{document}
Some already made image:
\extimg{/usr/local/texlive/2015/texmf-dist/tex/latex/mwe/example-image-a.jpg}
Some image to do:
\extimg{/home/Richard/my_funny/proyect/more_carpets/and_more/images/todo_tomorrow/my_image.jpg}
\end{document}