이 명령은 \displaygraphics[width-1in]{figure=some_fig.pdf}
그래픽을 표시합니다. 때로는 사용 가능한 그래픽 파일이 없을 때 조판하고 싶기 때문에 다음과 같은 작업을 수행하고 싶습니다.
\renewcommand{\includegraphics}[1][]{\verb|#2|}
의도는 그래픽을 표시하려고 하기보다는 단순히 사용할 파일 이름을 표시하는 것입니다. 참고 그래픽 이름에는 밑줄이 있으므로 축어적으로 같은 이름을 원합니다. 따라서 명령이
\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
인수 수는 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}