
Я написал несколько команд, недавно добавив удобную команду \FS
для добавления источников рисунков:
\newcommand{\FS}[1]{%
\protect\\{\protect\scriptsize{}Bildquelle: #1}}
Я не знаю, правильно ли это (все эти \protect
), но, кажется, это работает внутри \caption
. К сожалению, я попытался улучшить команду, добавив необязательный параметр:
\newcommand{\FS}[2][Bildquelle]{%
\protect\ifthenelse{\equal{#1}{}}%
\protect\\{\protect\scriptsize{}#2}
\protect\\{\protect\scriptsize{}#1: #2}}
При использовании варианта без указания необязательного параметра эффект заключается в том, что #2
выводится развернутый, а затем развернутый Bildquelle: #2
(на самом деле даже при указании необязательного параметра вывод дублируется, как описано). Например:
Я не настолько хорошо разбираюсь в TeX, чтобы решить проблему самостоятельно, даже после прочтения ответов на \protect
. Как должна быть написана команда?
решение1
Обратите внимание, что \ifthenelse{<condition>}{<true>}{<false>}
требует <true>
и <false>
для группировки. Если нет, то <condition>
предполагается, что два токена, следующие за , обозначают <true>
и <false>
. В вашей настройке <true>
это \protect
и \\
это <false>
. Вероятно, вы искали что-то вроде
\newcommand{\FS}[2][Bildquelle]{%
\protect\ifthenelse{\equal{#1}{}}%
{\protect\\{\protect\scriptsize{}#2}}
{\protect\\{\protect\scriptsize{}#1: #2}}}
Используя условный тест вКак проверить, является ли значение макроса пустым или не создаст ли текст с помощью простых условных операторов TeX?, вы можете вместо этого определить \FS
быть
\newcommand{\FS}[2][Bildquelle]{%
\\
\scriptsize
\if\relax\detokenize{#1}\relax\else
#1:
\fi
#2%
}
Вот полный минимальный пример использования:
\documentclass{article}
\usepackage{caption}
\newcommand{\FS}[2][Bildquelle]{%
\\
\scriptsize
\if\relax\detokenize{#1}\relax\else
#1:
\fi
#2%
}
\begin{document}
\begin{figure}
\caption{Some caption. \FS{abc}}
\caption{Another caption. \FS[abc]{def}}
\caption{Final caption. \FS[]{ghi}}
\end{figure}
\end{document}