\newcommand 내에서 \동사 또는 이와 유사한 것을 사용하는 방법

\newcommand 내에서 \동사 또는 이와 유사한 것을 사용하는 방법

이 명령은 \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|}
  1. 첫 번째 인수는 \renewcommand매크로 이름이어야 합니다(백슬래시 포함(질문에서 수정됨)).

  2. 재정의 명령은 \includegraphics(질문에서 수정됨) 입니다.

  3. #1인수 수는 1이 아니라 2여야 합니다. 또 다른 대괄호 쌍이 뒤따르면 내용은 대체 텍스트에서 로 표시되는 선택적 인수의 기본값입니다 . 또한 필수 인수를 원하므로 두 개가 됩니다.

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

관련 정보