【问题标题】:Spacing issues with xspacexspace 的间距问题
【发布时间】:2014-03-04 02:03:14
【问题描述】:

假设我的宏是\newcommand{\k}{king\xspace}。然后间距在 “……说\k。”会没事的。但是如果我不想在 \k\k.? 的中间我要“王者”。不是“国王国王”。

有没有办法做到这一点?

【问题讨论】:

  • 我认为这应该在 tex.SE 上进行......它似乎与 LaTeX 的编程方面无关。

标签: latex spacing xspace


【解决方案1】:

\unskip 删除之前插入的任何跳过(包括空格),因此在您想要删除它的奇怪场合使用\K\unskip\K 也足够了:

\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}

【讨论】:

    【解决方案2】:

    \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}
    

    【讨论】:

      【解决方案3】:

      xspace 文档说处理这个问题的方法是在宏调用后立即使用 {}:

       \k{}\k
      

      最新版本的 xspace 还允许您指定不应在宏之后生成空间的其他宏:

       \xspaceaddexceptions{\k}
      

      我想将它用于 \xspaceaddexceptions{\textsuperscript},但它对我不起作用,因为我的商店有 xspace v1.06,而且还不够新。所以我用了:

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

      除了粗体部分标题外,效果很好,因为我使用的字体中没有粗体小写字母。叹息……

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-29
        • 1970-01-01
        • 1970-01-01
        • 2014-10-25
        相关资源
        最近更新 更多