也许这已经完成了,在这种情况下你可以告诉我更好的方法,但我想知道我做错了什么。我想创建以下代码序列:
\begin{center}
\includegraphics[scale=1]{filename.png}
{ \small Fig. 1.54 A MOSFET is a terrible thing to waste }
\end{center}
暂时忘记了编号(我最终会喜欢它)我尝试创建一个命令使其更紧凑:
\img[1][myimage.png][railroad bridge with reinforced sides]
尝试实现此操作的命令:
\newcommand{\img}[3]{%
\begin{center}%
\includegraphics[scale = {#1}]{#2}%
{ Fig. 1.54 {#3} }%
\end{center}}
它在下一个 \end{ } 时就死掉了,所以很明显我做错了什么。
我还尝试传入 [scale=1] 而不是 1,并更改新命令:
\newcommand{\img}[3]{%
\begin{center}%
\includegraphics[{#1}]{#2}%
{ Fig. 1.54 {#3} }%
\end{center}}
正如我所说的,我想知道如何创建一个框并对它们进行编号,因此我愿意接受一个告诉我应该使用哪个包的答案,但我也希望能够解释一下我的语法出了什么问题。
答案1
我不知道有什么问题\caption
,所以我在里面使用它(嗯,\captionof
这里更好。
所需接口
\img[1][myimage.png][railroad bridge with reinforced sides]
强制LaTeX
寻找三个可选参数,这首先不太容易,其次容易出错(使用{...}
是错误的,而且参数的顺序也很难记住)
而是使用
\img[1]{myimage.png}[railroad bridge with reinforced sides]
使用\NewDocumentCommand{\img}{O{1}m+o}
,其中+o
允许长可选参数,并且可以使用进行查询\IfValueT
。
\documentclass{article}
\usepackage{graphicx}
\usepackage{xparse}
\usepackage{caption}
\NewDocumentCommand{\img}{sO{1}m+o}{%
\begin{center}%
\includegraphics[scale = {#2}]{#3}%
\IfValueT{#4}{%
\IfBooleanTF{#1}{%
\captionof*{figure}{#4} %
}{%
\captionof{figure}{#4} %
}
}
\end{center}
}
\begin{document}
\img[0.2]{ente}[A duck A duck A duck A duck A duck A duck A duck A duck]
\img*[0.2]{ente}[A duck A duck A duck A duck A duck A duck A duck A duck]
\end{document}
带星号的版本\img*
省略了编号。
答案2
如果您喜欢宏形式,而不是环境形式,我会首先向您展示您的结果和 3 种带有boxhandler
包的替代方案。
\documentclass[a4paper]{article}
\usepackage{boxhandler,graphicx}
\begin{document}
\begin{center}
\includegraphics[scale=.3]{example-image}\\
{\small Fig. 1.54 A MOSFET is a terrible thing to waste}
\end{center}
or
\bxfigure[ht]{A MOSFET is a terrible thing to waste}
{\includegraphics[scale=.3]{example-image}}
\captionStyle{n}{}
\bxfigure[ht]{A MOSFET is a terrible thing to waste}
{\includegraphics[scale=.3]{example-image}}
\constrainCaptionWidth{\textwidth}
\captionStyle{n}{c}
\bxfigure[ht]{A MOSFET is a terrible thing to waste}
{\includegraphics[scale=.3]{example-image}}
\end{document}