대괄호 내부 또는 트리밍에 매크로를 사용할 수 없습니다.
사용자 명령을 사용하여 그림 선택적 매개 변수를 기본값으로 정의하려고하는데 [ ]
. 다음 예제에서는을 trim=0 0 0 0
로 바꿀 때 예외가 발생합니다 trim=\trim
.
\usepackage[demo]{graphicx}
\newcommand{\trim}{0 0 0 0}
\begin{document}
\begin{figure}[htbp]
\centering
\includegraphics[width=\linewidth,trim=0 0 0 0,clip]{Figure}
\caption{blablabla.}
\end{figure}
\end{document}
게다가 내 목표는 width=\linewidth,trim=0 0 0 0,clip
내부 의 전체 문장을 대체 할 수있는 명령을 정의하는 [ ]
것입니다.
답변
2020 년 8 월 20 일 수정
다시 한번 나는 (Ulrich Diez) 자신을 당황스러운 상황에 빠뜨 렸습니다.
아래 내용을 작성하는 동안 I (Ulrich Diez)는 대괄호 [
와 ]
중괄호와는 달리 범주 코드 1과 2가 아니라 범주 코드 12의 일반 문자이므로 대괄호라는 사실에 대해 생각하지 않았습니다. 매크로 인수 내에서 발생할 수 있습니다. 아래 코드보다 덜 복잡하고 훨씬 짧습니다.
\documentclass{article}
\usepackage[demo]{graphicx}
\newcommand\exchange[2]{#2#1}
\newcommand{\trim}{0 0 0 0}
\begin{document}
\begin{figure}[htbp]
\centering
\expandafter\exchange\expandafter{\trim}{%
\includegraphics[width=\linewidth,trim=%
},clip]{/path/to/graphics/file.jpg}%%%%%
% Why two captions?
\caption{Testing of the Y-axis.}%%%%%
\caption{blablabla.}%%%%%
\end{figure}
\end{document}
순서
\expandafter\exchange\expandafter{\trim}{%
\includegraphics[width=\linewidth,trim=%
},clip]{/path/to/graphics/file.jpg}%%%%%
다음을 트리거합니다.
\expandafter
확대에 쇄 리드 \trim
:
\exchange{0 0 0 0}{%
\includegraphics[width=\linewidth,trim=%
},clip]{/path/to/graphics/file.jpg}%%%%%
\exchange
수율 확대 :
\includegraphics[width=\linewidth,trim=%
0 0 0 0,clip]{/path/to/graphics/file.jpg}%%%%%
2020 년 8 월 20 일에 편집 종료
\trim
-command 의 정의가 그림에서 그림으로 바뀔 수 있다면, 예를 들어 \romannumeral0
-expansion- 및 argument-exchanging-technique를 사용할 수 있습니다. -expansion의 요지는 \romannumeral0
다음과 같습니다.
- TeX는 확장 가능한 토큰을 확장하면서 로마 숫자로 표시되는 ⟨number⟩- 수량에 속하는 토큰을 수집 합니다.
- TeX가 ⟨number⟩ -quantity 를 모아서 찾은 첫 번째 토큰이 숫자 (예 :) 이면 ⟨number⟩ -quantity에
0
속하는 토큰을 모으는 과정은 더 많은 자릿수 또는 그렇지 않은 것을 모으는 과정으로 바뀝니다. 따라서 수집 프로세스를 종료합니다. 확장 가능한 토큰은 숫자를 수집하는 동안 확장됩니다. 숫자 시퀀스를 종료하는 스페이스 토큰은 더 많은 숫자를 수집하는 프로세스를 종료하고 조용히 버려집니다. - 수집 된 숫자가 양수가 아니면 TeX는 토큰을 대가로 전달하지 않고 ⟨number⟩- 수량을 형성하는 토큰을 조용히 삼킬 것 입니다.
이것은 \romannumeral
결국 양수가 아닌 숫자가 발견된다는 것이 보장되는 한 많은 확장 및 인수 교환 작업을 수행하도록 TeX를 속이는 데 사용할 수 있음을 의미합니다 .
\documentclass{article}
\usepackage[demo]{graphicx}
\newcommand\exchange[2]{#2#1}
\newcommand{\trim}{0 0 0 0}
\begin{document}
\begin{figure}[htbp]
\centering
\expandafter\includegraphics\expandafter[%
\romannumeral0%
\expandafter\exchange
\expandafter{\trim}{ width=\linewidth,trim=},clip%
]{/path/to/graphics/file.jpg}%%%%%
% Why two captions?
\caption{Testing of the Y-axis.}%%%%%
\caption{blablabla.}%%%%%
\end{figure}
\end{document}
순서
\expandafter\includegraphics\expandafter[%
\romannumeral0%
\expandafter\exchange
\expandafter{\trim}{ width=\linewidth,trim=},clip%
]{/path/to/graphics/file.jpg}%%%%%
다음을 트리거합니다.
(최상위) 확장을 획득하는 \expandafter
과정은 다음 토큰이 하나 인 최상위 확장을 전달하는 과정 을 트리거하고 다음 토큰이 아니라 하나의 토큰을 획득하는 과정이 종료되면 종료됩니다. . 그러므로:
% Process of obtaining the top-level-expansion of the first \expandafter in
% progress, this process triggers the process of obtaining the top-level-
% expansion of the next but one token:
\includegraphics\expandafter[%
\romannumeral0%
\expandafter\exchange
\expandafter{\trim}{ width=\linewidth,trim=},clip%
]{/path/to/graphics/file.jpg}%%%%%
첫 번째에서 나가는 다음 토큰 \expandafter
도 \expandafter
이므로 다음과 같습니다.
% Process of obtaining the top-level-expansion of the first \expandafter in
% progress, this process triggerd the process of obtaining the top-level-
% expansion of the second \expandafter:
\includegraphics
% Process of obtaining the top-level-expansion of the second \expandafter in
% progress, this process triggers the process of obtaining the top-level-
% expansion of the next but one token:
[%
\romannumeral0%
\expandafter\exchange
\expandafter{\trim}{ width=\linewidth,trim=},clip%
]{/path/to/graphics/file.jpg}%%%%%
두 번째에서 나가는 다음 토큰 \expandafter
은 \romannumeral
이므로 다음과 같습니다.
% Process of obtaining the top-level-expansion of the first \expandafter in
% progress, this process triggerd the process of obtaining the top-level-
% expansion of the second \expandafter:
\includegraphics
% Process of obtaining the top-level-expansion of the second \expandafter in
% progress, this process triggerd the process of obtaining the top-level-
% expansion of \romannumeral:
[%
% Process of obtaining the top-level-expansion of \romannumeral in progress;
% Sub-process of \romannumeral-expansion for gathering tokens of a <number>-
% quantity in progress:
0%
\expandafter\exchange
\expandafter{\trim}{ width=\linewidth,trim=},clip%
]{/path/to/graphics/file.jpg}%%%%%
TeX는 digit를 찾습니다. 0
따라서 ⟨number⟩ -quantity의 \romannumeral
토큰을 수집하는 하위 프로세스는 더 많은 숫자를 수집하는 프로세스 또는 숫자 시퀀스를 종료하는 프로세스로 바뀝니다.
% Process of obtaining the top-level-expansion of the first \expandafter in
% progress, this process triggerd the process of obtaining the top-level-
% expansion of the second \expandafter:
\includegraphics
% Process of obtaining the top-level-expansion of the second \expandafter in
% progress, this process triggerd the process of obtaining the top-level-
% expansion of \romannumeral:
[%
% Process of obtaining the top-level-expansion of \romannumeral in progress;
% Sub-process of \romannumeral-expansion for gathering more digits of a
% <number>-quantity in progress; digit "0" found so far:
\expandafter\exchange
\expandafter{\trim}{ width=\linewidth,trim=},clip%
]{/path/to/graphics/file.jpg}%%%%%
⟨number⟩ -quantity에 속하는 더 많은 토큰 / 숫자를 검색하는 동안 TeX는 세 번째 \expandafter
:
% Process of obtaining the top-level-expansion of the first \expandafter in
% progress, this process triggerd the process of obtaining the top-level-
% expansion of the second \expandafter:
\includegraphics
% Process of obtaining the top-level-expansion of the second \expandafter in
% progress, this process triggerd the process of obtaining the top-level-
% expansion of \romannumeral:
[%
% Process of obtaining the top-level-expansion of \romannumeral in progress;
% Sub-process of \romannumeral-expansion for gathering more digits of a
% <number>-quantity in progress; digit "0" found so far:
% Process of obtaining the top-level-expansion of the third \expandafter
% in progress, this process triggers the process of obtaining the top-
% level-expansion of the next but one token:
\exchange
\expandafter{\trim}{ width=\linewidth,trim=},clip%
]{/path/to/graphics/file.jpg}%%%%%
다음으로 세 번째에서 나가는 하나의 토큰 \expandafter
은 \expandafter
이므로 다음과 같습니다.
% Process of obtaining the top-level-expansion of the first \expandafter in
% progress, this process triggerd the process of obtaining the top-level-
% expansion of the second \expandafter:
\includegraphics
% Process of obtaining the top-level-expansion of the second \expandafter in
% progress, this process triggerd the process of obtaining the top-level-
% expansion of \romannumeral:
[%
% Process of obtaining the top-level-expansion of \romannumeral in progress;
% Sub-process of \romannumeral-expansion for gathering more digits of a
% <number>-quantity in progress; digit "0" found so far:
% Process of obtaining the top-level-expansion of the third \expandafter
% in progress, this process triggerd the process of obtaining the top-
% level-expansion of the fourth \expandafter:
\exchange
% Process of obtaining the top-level-expansion of the fourth \expandafter
% in progress, this process triggers the process of obtaining the top-
% level-expansion of the next but one token:
{\trim}{ width=\linewidth,trim=},clip%
]{/path/to/graphics/file.jpg}%%%%%
네 번째 토큰에서 나가는 다음 토큰 \expandafter
은 \trim
이므로 최상위 확장 \expandafter
을 얻는 프로세스가 종료되면 네 번째 의 최상위 확장을 얻는 프로세스 \trim
가 종료됩니다.
% Process of obtaining the top-level-expansion of the first \expandafter in
% progress, this process triggerd the process of obtaining the top-level-
% expansion of the second \expandafter:
\includegraphics
% Process of obtaining the top-level-expansion of the second \expandafter in
% progress, this process triggerd the process of obtaining the top-level-
% expansion of \romannumeral:
[%
% Process of obtaining the top-level-expansion of \romannumeral in progress;
% Sub-process of \romannumeral-expansion for gathering more digits of a
% <number>-quantity in progress, digit "0" found so far:
% Process of obtaining the top-level-expansion of the third \expandafter
% in progress, this process triggerd the process of obtaining the top-
% level-expansion of the fourth \expandafter:
\exchange
% Process of obtaining the top-level-expansion of the fourth \expandafter
% terminated.
{0 0 0 0}{ width=\linewidth,trim=},clip%
]{/path/to/graphics/file.jpg}%%%%%
네 번째 \expandafter
의 최상위 확장을 획득하는 프로세스가 종료됨에 따라 세 번째의 최상위 확장을 획득하는 프로세스 \expandafter
도 종료됩니다.
% Process of obtaining the top-level-expansion of the first \expandafter in
% progress, this process triggerd the process of obtaining the top-level-
% expansion of the second \expandafter:
\includegraphics
% Process of obtaining the top-level-expansion of the second \expandafter in
% progress, this process triggerd the process of obtaining the top-level-
% expansion of \romannumeral:
[%
% Process of obtaining the top-level-expansion of \romannumeral in progress;
% Sub-process of \romannumeral-expansion for gathering more digits of a
% <number>-quantity in progress, digit "0" found so far:
% Process of obtaining the top-level-expansion of the third \expandafter
% terminated.
\exchange
{0 0 0 0}{ width=\linewidth,trim=},clip%
]{/path/to/graphics/file.jpg}%%%%%
세 번째의 최상위 확장을 얻는 프로세스 \expandafter
가 종료되면 \romannumeral
-expansion이 계속되어 확장이 발생합니다 \exchange
.
% Process of obtaining the top-level-expansion of the first \expandafter in
% progress, this process triggerd the process of obtaining the top-level-
% expansion of the second \expandafter:
\includegraphics
% Process of obtaining the top-level-expansion of the second \expandafter in
% progress, this process triggerd the process of obtaining the top-level-
% expansion of \romannumeral:
[%
% Process of obtaining the top-level-expansion of \romannumeral in progress;
% Sub-process of \romannumeral-expansion for gathering more digits of a
% <number>-quantity in progress; digit "0" found so far:
<space-token>width=\linewidth,trim=0 0 0 0,clip%
]{/path/to/graphics/file.jpg}%%%%%
TeX는 스페이스 토큰을 찾습니다. 이 공간 토큰은 ⟨number⟩- 수량 의 더 많은 자릿수를 수집하는 하위 프로세스를 종료하고 조용히 버려집니다.
% Process of obtaining the top-level-expansion of the first \expandafter in
% progress, this process triggerd the process of obtaining the top-level-
% expansion of the second \expandafter:
\includegraphics
% Process of obtaining the top-level-expansion of the second \expandafter in
% progress, this process triggerd the process of obtaining the top-level-
% expansion of \romannumeral:
[%
% Process of obtaining the top-level-expansion of \romannumeral in progress;
% Sub-process of \romannumeral-expansion for gathering more digits of a
% <number>-quantity terminated; number "0" found.
width=\linewidth,trim=0 0 0 0,clip%
]{/path/to/graphics/file.jpg}%%%%%
텍 같이 발견 ⟨number⟩에 그 값 -quantity을 0
하면서, 0
양의 값의 최상위 팽창 얻는 프로세스 아닌 \romannumeral
자동으로 그 형성 토큰 삼켜이 종료 ⟨number⟩의 모든 토큰을 전달 텍 않고 -quantity을 반환.
% Process of obtaining the top-level-expansion of the first \expandafter in
% progress, this process triggerd the process of obtaining the top-level-
% expansion of the second \expandafter:
\includegraphics
% Process of obtaining the top-level-expansion of the second \expandafter in
% progress, this process triggerd the process of obtaining the top-level-
% expansion of \romannumeral:
[%
% Process of obtaining the top-level-expansion of \romannumeral terminated.
width=\linewidth,trim=0 0 0 0,clip%
]{/path/to/graphics/file.jpg}%%%%%
최상위 확장 \romannumeral
을 획득하는 프로세스가 종료됨에 따라 두 번째 최상위 확장을 획득하는 프로세스 \expandafter
도 종료됩니다.
% Process of obtaining the top-level-expansion of the first \expandafter in
% progress, this process triggerd the process of obtaining the top-level-
% expansion of the second \expandafter:
\includegraphics
% Process of obtaining the top-level-expansion of the second \expandafter
% terminated.
[%
width=\linewidth,trim=0 0 0 0,clip%
]{/path/to/graphics/file.jpg}%%%%%
두 번째 \expandafter
의 최상위 확장을 얻는 프로세스가 종료됨에 따라 첫 번째 의 최상위 확장을 얻는 프로세스 \expandafter
도 종료됩니다.
% Process of obtaining the top-level-expansion of the first \expandafter
% terminated.
\includegraphics
[%
width=\linewidth,trim=0 0 0 0,clip%
]{/path/to/graphics/file.jpg}%%%%%