如何删除引用前的空格?

如何删除引用前的空格?

我在用着

\usepackage{cite}

引用参考书目(我使用 bibtex)。一般来说,文本是希腊文,但参考书目是英文。我使用 babel 包,因此为了用英文书写,您需要将文本放在\selectlanguage命令之间,这会更改语言。例如,要写参考文献,我必须使用

\selectlanguage{english}\cite{foo}\selectlanguage{greek}

因为其他拉丁字符会被希腊字符取代,而我不希望发生这种情况,因为参考书目是英文的。

所以我做了一个小宏:

\newcommand{\citem}[1]{\selectlanguage{english}\cite{#1}\selectlanguage{greek}}

由于某种原因,此命令会在引用前添加空格。例如,如果我想引用书籍啦啦啦标记为foo并写入Some text (\citem{foo}),这将打印出来

一些文字([废话])

我怎样才能使左括号和中括号之间的空格消失?

我确信语言不是这里的问题,因为我将宏更改为简单的

\newcommand{\citem}[1]{\cite{#1}}

并印刷

([Βλαη])

拉丁字符变成了希腊字符,这是意料之中的,但空格仍然存在。

更新:感谢 egreg,我找到了一种方法来消除引用前的冗余空格。宏是:

\makeatletter
\newcommand{\citem}[1]{%
  \begingroup\let\cite@adjust\@empty
  \textlatin{\cite{#1}}%
\endgroup
}

但现在我无法将其用作citem标题。错误是:

Argument of \@caption has an extra }.
  <inserted text>
    \par
l.261 }

答案1

首先,你不需要使用\selectlanguage两次。

当使用正常引用样式时,该cite包会尽力避免将引用附加到前一个单词。将引用放在括号内是很不寻常的,因为已经有方括号将其与上下文分开,并且措辞清楚地表明了引用是否是括号。

如果你确实需要这样的风格,我建议你定义两个不同的命令,一个用于括号引用,一个用于普通引用:

\documentclass{article}
\usepackage[english,greek]{babel}
\usepackage{cite}

\makeatletter
\DeclareRobustCommand{\pcite}[1]{%
  \begingroup\let\cite@adjust\@empty
  (\textlatin{\cite{#1}})%
  \endgroup
}
\makeatother
\DeclareRobustCommand{\ncite}[1]{% cite without parentheses
  \textlatin{\cite{#1}}%
}

\begin{document}
This is in Greek \pcite{x} again Greek.

This is in Greek \ncite{x} again Greek.

\selectlanguage{english}
\begin{thebibliography}{Blah}
\bibitem[Blah]{x} Something
\end{thebibliography}
\end{document}

在此处输入图片描述

答案2

\unskip在引用之前插入一个标记:

\newcommand\citem[1]{\selectlanguage{english}\unskip\cite{#1}\selectlanguage{greek}

相关内容