So verwenden Sie \verb oder etwas Ähnliches in einem \newcommand

So verwenden Sie \verb oder etwas Ähnliches in einem \newcommand

Der Befehl \displaygraphics[width-1in]{figure=some_fig.pdf}zeigt eine Grafik an. Manchmal möchte ich einen Satz erstellen, wenn ich die Grafikdateien nicht zur Verfügung habe. Dann mache ich etwas wie:

\renewcommand{\includegraphics}[1][]{\verb|#2|}

Die Absicht besteht darin, einfach den Namen der zu verwendenden Datei anzuzeigen, anstatt zu versuchen, die Grafik anzuzeigen. Beachten Sie, dass Grafiknamen Unterstriche haben, weshalb ich etwas wie „wörtlich“ möchte. Der Befehl \renewcommand{\includegraphics}[1][]{#2}funktioniert also nicht.

Natürlich funktioniert die obige Lösung auch nicht, da sie \verbso nicht innerhalb eines verwendet werden kann \renewcommand. Wie mache ich das?

Antwort1

Der Grund, warum Ihre Neudefinition nicht funktioniert, ist, dass Sie die falsche Anzahl von Argumenten in angeben \renewcommand. Wenn ich Ihre Frage richtig verstehe, möchten Sie nur Dateinamen-Platzhalter für Ihre Bilder. Hier ist ein Beispiel:

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

Ausgabe des Codes

Alternativ können Sie die [demo]Option verwenden graphicx, die alle Befehle durch ein schwarzes Kästchen ersetzt, \includegraphicswie unten. In diesem Fall werden die Dateinamen natürlich nicht ausgedruckt, aber Sie müssen auch nicht neu definieren \includegraphics.

Ausgabe der Demo

Antwort2

Ihr Code enthält mehrere Fehler:

\renewcommand{displaygraphics}[1][]{\verb|#2|}
  1. Das erste Argument \renewcommandmuss ein Makroname (mit Backslash (in der Frage behoben)) sein.

  2. Der Befehl zum Neudefinieren lautet \includegraphics(in der Frage behoben)

  3. Die Anzahl der Argumente sollte 2 und nicht 1 betragen: Wenn ein weiteres Klammerpaar folgt, ist der Inhalt der Standardwert des optionalen Arguments, das #1im Ersetzungstext durch gekennzeichnet ist; Sie möchten auch ein obligatorisches Argument, also zwei.

  4. \verbkann nicht im Argument eines anderen Makros verwendet werden.

Lösung:

\renewcommand{\includegraphics}[2][]{\texttt{\detokenize{#2}}}

Dadurch werden auch Unterstriche zugelassen.

Antwort3

Wie wäre es mit einer ersten Prüfung \IfFileExistsund wenn diese bereits vorhanden ist, einfach \includegraphicsoder anderweitig, auch für Unterstriche und lange Pfade, im Fernschreibstil, besser ein ? verwenden \url?

mwe

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

verwandte Informationen