我正在写一本大书,需要确保所有引文前面都有空格。我试过了
\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
。