Spec-Zone.ru › LaTeX

\ignorespaces & \ignorespacesafterend

Синопсис:

\ignorespaces

или

\ignorespacesafterend

Обе команды заставляют LaTeX игнорировать пробелы (т.е. символы с кодом категории 10, такие как пробел или табуляция) после окончания команды до первой строки или символа, отличного от пробела. Первая — команда из обычного TeX, а вторая — специфичная для LaTeX.

Команда \ignorespaces часто используется при определении команд с помощью \newcommand, или \newenvironment, или \def. Приведённый ниже пример иллюстрирует это. Он позволяет пользователю показывать значения баллов за вопросы викторины в поле слева, но это неудобно, так как, как показано в списке enumerate, пользователи не должны вставлять пробел между командой и текстом вопроса.

\newcommand{\points}[1]{\makebox[0pt]{\makebox[10em][l]{#1~pts}}
\begin{enumerate} 
  \item\points{10}no extra space output here
  \item\points{15} extra space between the number and the `extra'
\end{enumerate} 

Решение состоит в переходе к этому.

\newcommand{\points}[1]{%
  \makebox[0pt]{\makebox[10em][l]{#1~pts}}\ignorespaces}

Второй пример демонстрирует удаление пробелов в начале текста. Команды ниже позволяют пользователю единообразно добавлять заголовок к именам. Однако, если заголовок случайно начнётся с пробела, то \fullname воспроизведёт его.

\newcommand{\honorific}[1]{\def\honorific{#1}} % remember title
\newcommand{\fullname}[1]{\honorific~#1}       % put title before name

\begin{tabular}{|l|}
\honorific{Mr/Ms}  \fullname{Jones} \\  % no extra space here
\honorific{ Mr/Ms} \fullname{Jones}     % extra space before title
\end{tabular}

Чтобы исправить это, измените на \newcommand{\fullname}[1]{\ignorespaces\honorific~#1}.

Команда \ignorespaces также часто используется в \newenvironment в конце условия begin, как в \begin{newenvironment}{env name}{... \ignorespaces}{...}.

Чтобы удалить пробелы в конце окружения, используйте \ignorespacesafterend. Пример: это создаст гораздо больший вертикальный зазор между первым и вторым окружениями, чем между вторым и третьим.

\newenvironment{eq}{\begin{equation}}{\end{equation}}
\begin{eq}
e=mc^2
\end{eq}
\begin{equation}
F=ma
\end{equation}
\begin{equation}
E=IR
\end{equation}

Размещение символа комментария % сразу после \end{eq} устранит вертикальный зазор, но это неудобно. Решение — изменить на \newenvironment{eq}{\begin{equation}}{\end{equation}\ignorespacesafterend}.

© 2007–2018 Karl Berry
Public Domain Software
http://latexref.xyz/_005cignorespaces-_0026-_005cignorespacesafterend.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API