Cómo usar \verb o algo similar dentro de un \newcommand

Cómo usar \verb o algo similar dentro de un \newcommand

El comando \displaygraphics[width-1in]{figure=some_fig.pdf}mostrará un gráfico. A veces quiero componer cuando no tengo los archivos de gráficos disponibles, entonces quiero hacer algo como:

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

La intención es que simplemente muestre el nombre del archivo que se utilizará, en lugar de intentar mostrar el gráfico. Tenga en cuenta que los nombres de los gráficos tienen guiones bajos, razón por la cual me gustaría algo así textualmente. Entonces el comando \renewcommand{\includegraphics}[1][]{#2}no funciona.

Por supuesto, la solución anterior tampoco funciona, ya que \verbno se puede usar así dentro de un archivo \renewcommand. ¿Cómo hago esto?

Respuesta1

La razón por la que su redefinición no funciona es que está especificando una cantidad incorrecta de argumentos en el archivo \renewcommand. Si entiendo tu pregunta correctamente, solo quieres marcadores de posición de nombre de archivo para tus imágenes. He aquí un ejemplo:

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

salida de código

Alternativamente, puede usar la [demo]opción graphicxque reemplazará cualquier \includegraphicscomando con un cuadro negro como se muestra a continuación. En este caso, por supuesto, no se imprimen los nombres de los archivos, pero tampoco es necesario redefinirlos \includegraphics.

salida de demostración

Respuesta2

Hay una serie de errores en su código:

\renewcommand{displaygraphics}[1][]{\verb|#2|}
  1. El primer argumento \renewcommanddebe ser un nombre de macro (con la barra invertida (corregida en la pregunta).

  2. El comando para redefinir es \includegraphics(fijado en la pregunta)

  3. El número de argumentos debe ser 2, no 1: cuando sigue otro par de corchetes, el contenido es el valor predeterminado del argumento opcional, que se indica con #1en el texto de reemplazo; también quieres un argumento obligatorio, lo que suma dos.

  4. \verbno se puede utilizar en el argumento de otra macro.

Solución:

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

Esto también permitirá guiones bajos.

Respuesta3

¿Qué pasa con la primera verificación \IfFileExistsy si ya está allí, simple \includegraphicso no, para guiones bajos y caminos largos también, en estilo teletipo, es mejor usar un \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}

información relacionada