LINUX.ORG.RU

Условный оператор в LaTeX - подскажите правильную организацию?

 , ,


0

1

В документе часто возникает необходимость вставлять рисунки кодом вида:

\begin{figure}[ht]
  \centering
  \includegraphics{...}
  \caption{...}
  \label{...}
\end{figure}

и пары рисунков разной высоты (при помощи вспомогательной таблица, как сказано тут), дабы упростить код и автоматизировать это дело, решил написать соответствующие команды, затруднение возникло при попытке добавить опциональный аргумент.

Для части рисунков необходимо задавать ширину, для других - нет. Имеющийся код:

% SinglePanelFigure:
%    width (optional)
%    path
%    caption
%    label
\newcommand{\SinglePanelFigure}[4][0]{
\begin{figure}[ht]
  \centering  
  \ifthenelse{0=#1}
      {\includegraphics{#2}}
      {\includegraphics[width=#1]{#2}}
  \caption{#3}
  \label{#4}
\end{figure}
}

Но при повытке использования:

\SinglePanelFigure   
    {1\linewidth}
    {...}
    {...}
    {...}

падает с кучей ошибок, начинающихся с "! Illegal unit of measure (pt inserted). <to be read again>".

Пока не готовил минимальный пример, иллюстрирующий ошибку, может тут что-то настолько очевидное, что знающим и так понятно?

P.S. Для вставки пар рисунков получился вот такой код:

\newcommand{\TwoPanelFigure}[4]{
\begin{figure}[ht]  
  \begin{minipage}[ht]{0.49\linewidth}
    \centering
    \includegraphics[width=\linewidth]{#1}
  \end{minipage}
  \hfill
  \begin{minipage}[ht]{0.49\linewidth}
    \centering
    \includegraphics[width=\linewidth]{#2}
  \end{minipage}
  \begin{minipage}[h]{1\linewidth}
    \begin{tabular}{p{0.49\linewidth}p{0.49\linewidth}}
    \centering а) & \centering б) \\
    \end{tabular}
  \end{minipage}
  \vspace*{-1cm}
  \caption{#3}
  \label{#4}
\end{figure}
}

На первый взгляд ошбка вылазит из-за того, что вы сравниваете ″0″ и ″1\linewidth″ как числа, ведь ″\linewidth″ это единица измерения длины. Наверное, вам нужно:

\ifthenelse{\equal{#1}{0}}
Но не проверял.

mky ★★★★★ ()
Ответ на: комментарий от mky

Благодарю за совет!

Оказалось, неправильно указывал опциональный аргумент при вызове (квадратные скобки вместо фигурных)

omegatype ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.