我正在尝试创建一个新命令来帮助格式化图片列表的条目。参数 1 应该是可选的,并包含访问源的日期,参数 2 只是我想在图片列表中显示的图的标题,参数 3 是指向图像源的超链接。我希望来源和日期仅显示在图片列表中,而不是实际图像下方。我在序言中写道:
\newcommand{\lof}[3][]{
\textbf{#2}
\linebreak
{\scriptsize #3 #1}
}
这是一些图形的标题:
\caption[
\lof[(Accessed on 02.01.2019)]
{Basic neural network with three layers}
{\url{https://commons.wikimedia.org/wiki/File:Artificial_neural_network.svg}}
]
{Basic neural network with three layers}
请注意,我希望能够声明该图像是我自己的,在这种情况下应该省略超链接和日期。
\caption[
{Basic neural network with three layers}
{Made by the author.}
]
{Basic neural network with three layers}
这给了我以下错误:
! Argument of \\lof has an extra }.
但是,如果我没有弄错的话,括号应该是匹配的。我读到过一些“脆弱”命令,使用它们会导致和我收到的相同的错误消息。 \url{} 可能是脆弱的命令吗?还是我以某种方式弄乱了命令定义?
编辑:
以下代码显示了可能与问题相关的所有内容。如果我从代码中删除这些部分,LaTeX 文档就会编译。
\documentclass{article}
\usepackage{wrapfig,graphicx,amsmath,hyperref}
\newcommand{\lof}[3][]{\textbf{#2}\newline {\scriptsize #3 #1}}
\begin{document}
\listoffigures
\begin{wrapfigure}{r}{0.25\textwidth}
\centering
\includegraphics[width=0.25\textwidth]{example-image}
\caption[ {\lof[(Accessed on 02.01.2019)]
{Basic neural network with three layers}
{\url{https://commons.wikimedia.org/wiki/File:Artificial_neural_network.svg}}} ]
{Basic neural network with three layers}
\label{fig:nn}
\end{wrapfigure}
\begin{wrapfigure}{h}{0.5\textwidth}
\centering
\includegraphics[width=0.5\textwidth]{example-image}
\caption[{\lof{$\boldsymbol{\sigma (x)}$, the sigmoid function}
{Created by the author}}]
{$\sigma (x)$, the sigmoid function}
\label{fig:sigmoid}
\end{wrapfigure}
\end{document}
答案1
我没有收到任何错误,但是您的输入非常尴尬并且容易出错。
我建议定义一个新的\xcaption
命令,以尽量减少负担。
\documentclass{article}
\usepackage{xparse}
\usepackage{amsmath}
\usepackage{wrapfig}
\usepackage{graphicx}
\usepackage{hyperref}
\usepackage{kantlipsum}
\NewDocumentCommand{\xcaption}{O{#2}mmo}{%
\caption[\lof{#1}{#3\IfValueT{#4}{ #4}}]{#2}%
}
\NewDocumentCommand{\lof}{mm}{%
{\boldmath\textbf{#1}}\newline
{\scriptsize #2}%
}
\begin{document}
\listoffigures
\begin{wrapfigure}{r}{0.25\textwidth}
\centering
\includegraphics[width=0.25\textwidth]{example-image}
\xcaption
{Basic neural network with three layers}
{\url{https://commons.wikimedia.org/wiki/File:Artificial_neural_network.svg}}
[(Accessed on 02.01.2019)]
\label{fig:nn}
\end{wrapfigure}
\kant[1]
\begin{wrapfigure}{h}{0.5\textwidth}
\centering
\includegraphics[width=0.5\textwidth]{example-image}
\xcaption
[Short caption with $\sigma(x)$]
{$\sigma (x)$, the sigmoid function}
{Created by the author}
\label{fig:sigmoid}
\end{wrapfigure}
\kant[1]
\end{document}
语法是
\xcaption
[<optional caption for the lof>]
{<main caption>}
{<attribution>}
[<optional info>]
我添加了一个可选标题的示例,同时展示了如何在不明确添加的情况下获得粗体数学\boldsymbol
。
该\lof
命令仅起辅助作用,不应在文档中真正使用。