Проблемы с пробелами в xspace - PullRequest
       11

Проблемы с пробелами в xspace

4 голосов
/ 23 февраля 2011

Допустим, мой макрос \newcommand{\k}{king\xspace}.Затем интервалы в "... сказал \ k."будет хорошо.Но что мне делать, если я не хочу интервалов в середине \ k \ k.?Я хочу "король".не "король король".

Есть ли способ сделать это?

Ответы [ 3 ]

3 голосов
/ 03 марта 2014

В документации по xspace сказано, что способ справиться с этим - использовать {} сразу после вызова макроса:

 \k{}\k

В последних версиях xspace также можно указывать дополнительные макросы, которые не должны генерировать пространство после вашегомакрос:

 \xspaceaddexceptions{\k}

Я хотел использовать это для \ xspaceaddexceptions {\ textsuperscript}, но у меня это не сработало, так как в моем магазине есть xspace v1.06, а этого недостаточно.Поэтому я использовал:

 \newcommand{\unix}{\textsc{unix}\xspace}
 \unix{}\textsuperscript{\textregistered}

, который работал нормально, за исключением жирных заголовков разделов, поскольку в шрифте, который я использую, нет жирных маленьких заглавных букв.Вздох ...

3 голосов
/ 14 октября 2011

Весь смысл \xspace состоит в том, чтобы добавить пробел между словами и не добавлять пробел перед пунктуацией. Итак, если вы не хотите пробелов между двумя использованиями макроса, не используйте \xspace. Но, конечно, это потребует от вас использования {} в конце:

\documentclass{article}
\newcommand{\K}{king}%

\begin{document}
At end of sentence \K.\par
In between \K\K{} you want one long word.
\end{document}
2 голосов
/ 01 ноября 2012

\unskip удаляет все предыдущие вставленные пропуски (которые содержат пробел), поэтому использование \K\unskip\K для нечетных случаев, когда вы хотите удалить, также может быть достаточно:

enter image description here

\documentclass{article}
\usepackage{xspace}% http://ctan.org/pkg/xspace
\newcommand{\K}{king\xspace}
\begin{document}
Here is the \K. Here is the \K\K. Here is the \K\unskip\K.
\end{document}
...