
切り取る必要のある画像と、切り取る必要のある画像があります。 2 つの画像を使用して単一のソリューションを実装しましたが\newcommand
、うまく機能しませんでした。しかし、xparse を使用してコンパクトなソリューションを 1 つ探していますが、うまく機能せず、その理由がわかりません。
以下のコードを修正および改善するためのご協力をいただければ幸いです。
\documentclass[11pt]{article}
\usepackage{easyfig}
% [cut up]{file}{caption}{label}{scale} - Cut up % <== Ok
\newcommand{\ruleone}[5][.05]{%
\Figure[trim={.0\width} {.0\height} {.0\width} {#1\height},clip,%
width=#5\linewidth,keepaspectratio=true,%
caption={#3},label={#4},center,here]{#2}
}
% [cut down]{file}{caption}{label}{scale} - Cut down % <== Ok
\newcommand{\ruletwo}[5][.05]{%
\Figure[trim={.0\width} {#1\height} {.0\width} {.0\height},clip,%
width=#5\linewidth,keepaspectratio=true,%
caption={#3},label={#4},center,here]{#2}
}
% [cut up]{file}[cut down]{caption}{label}[scale] - Cut down % <== compile with errors
\newcommand{\onerule}[ o m o m m o ]{%
\Figure[trim={.0\width} {ifNoValueTF{#1}{.0}{#1}\height}%
{.0\width} {ifNoValueTF{#3}{.0}{#3}\height},clip,%
width={ifNoValueTF{#6}{1}{#6}\linewidth},keepaspectratio=true,%
caption={#4},label={#5},center,here]{#2}
}
\begin{document}
Here comes the images:
\ruleone[.45]{example-image-a}{First image}{label1}{.5} % <== this works
\ruletwo[.35]{example-image-a}{Second image}{label2}{.5} % <== This too
\onerule[.35]{example-image-b}{Third image}{label3}{.5}
\onerule{example-image-b}[0.45]{Third image}{label3}{.5}
\end{document}
答え1
ではxparse
、新しいコマンドを定義するコマンドは\NewDocumentCommand
ではなく です\newcommand
。また、パラメータを記述する 2 番目の引数は必須であり ({...}
ではなく[...]
)、(大文字でバックスラッシュ付き) にifNoValueTF
する必要があります。\IfNoValueTF
さらに、%
行末のトリム引数によって必要なスペースが抑制され、スケール引数はオプションです ([...]
ではなく{...}
)。
そうすると
\documentclass[11pt]{article}
\usepackage{xparse,easyfig}
% [cut up]{file}{caption}{label}{scale} - Cut up % <== Ok
\newcommand{\ruleone}[5][.05]{%
\Figure[trim={.0\width} {.0\height} {.0\width} {#1\height},clip,%
width=#5\linewidth,keepaspectratio=true,%
caption={#3},label={#4},center,here]{#2}
}
% [cut down]{file}{caption}{label}{scale} - Cut down % <== Ok
\newcommand{\ruletwo}[5][.05]{%
\Figure[trim={.0\width} {#1\height} {.0\width} {.0\height},clip,%
width=#5\linewidth,keepaspectratio=true,%
caption={#3},label={#4},center,here]{#2}
}
% [cut up]{file}[cut down]{caption}{label}[scale] - Cut down % <== compile with errors
\NewDocumentCommand \onerule { o m o m m o }{%
\Figure[trim={.0\width} {\IfNoValueTF{#1}{.0}{#1}\height}
{.0\width} {\IfNoValueTF{#3}{.0}{#3}\height},clip,%
width={\IfNoValueTF{#6}{1}{#6}\linewidth},keepaspectratio=true,%
caption={#4},label={#5},center,here]{#2}
}
\begin{document}
Here comes the images:
\ruleone[.45]{example-image-a}{First image}{label1}{.5} % <== this works
\ruletwo[.35]{example-image-a}{Second image}{label2}{.5} % <== This too
\onerule[.35]{example-image-b}{Third image}{label3}[.5]
\onerule{example-image-b}[0.45]{Third image}{label3}[.5]
\end{document}