\citep 宏前的空格

\citep 宏前的空格

我正在写一本大书,需要确保所有引文前面都有空格。我试过了

 \let\citep ~\citep

但这似乎不是正确的做法。你能帮忙吗?

干杯

答案1

你的尝试有两处错误。

\let将指定的命令等同于下一个单个命令。尽管它看起来不像命令,但~实际上是一个命令(对于不可破坏的空间)。所以你刚刚将其定义\citep为一个不可破坏的空间。

即使你使用了更合适的方法————\renewcommand{\citep}{~\citep}你也会遇到这样的问题:如果不“冻结”的原始含义 \citep,就会导致无休止的循环。

一个可靠的方法是定义一个全新的命令:

\newcommand{\mycitep}{~\citep}

这里,的原始含义\citep永远不会受到影响,如果您改变主意,很容易改变定义。这还允许您 \citep在需要时使用原文,例如,开始一个句子,而前面的空格是不合适的。

答案2

正如芭芭拉所解释的,\let这不是正确的命令。然而,在我看来,建议的解决方案也不是很好。

由于\citep是由 提供的natbib,因此我会假定它。

\documentclass{article}
\usepackage{natbib}
\usepackage{letltxmacro}

\LetLtxMacro{\ORIcitep}{\citep}
\DeclareRobustCommand{\citep}{\leavevmode\unskip~\ORIcitep}

这样,\citep被定义为执行与原始命令相同的操作,但删除了前面的可能空格并添加了一个连接。如果没有\unskip,输入如下

word~\citep{key}

会导致空格。

当然,\citep在段落开头使用它是没有意义的。所以我的建议是不是使用这样的重新定义,但要确保在必要时~之前输入。\citep

何时使用 \LetLtxMacro?欲了解有关 的更多信息\LetLtxMacro

相关内容