建议在、、内联数学之前以及其他几个位置放置一个不间断\cite
空格\ref
。
问题是您是否可以设计一个改进的版本\cite
(比如说),它将吞噬所有前面的空格,插入一个不间断的空格,然后继续调用原始版本\cite
?
答案1
是的,你可以。该varioref
软件包已经实现了这一点。查看它的源代码。例如:
\@vpageref More parsing. . . 596 \def\@vpageref[#1]{\@ifnextchar[% The default for the second optional argument is a space which is prexed by \unskip to get rid of any leading space inserted already. 597 {\@@vpageref{#1}}{\@@vpageref{#1}[\unskip\vref@space]}}
您应该能够定义:
\def\mycite#1{\unskip~\cite{#1}}
或者\cite
使用以下方法保存\let
:
\let\origcite\cite
\def\cite#1{\unskip~\origcite{#1}}
答案2
结合马丁的回答\cite
答案的重新定义,我可以在序言中使用以下内容,而不需要该varioref
包:
\let\originalcite\cite
\renewcommand{\cite}[1]{\unskip~\originalcite{#1}}
\let
关于发生了什么的很好的解释\renewcommand
是在制作您自己的 LaTeX 教程的样式部分:
\let
我们使用定义指向的指针的命令来干扰 LaTeX当前的另一个命令的定义;因此\let\LaTeXtitle\title
定义 \LaTeXtitle 指向 的原始 LaTeX 定义
\title
。接下来是\renewcommand{\title}[1]{\LaTeXtitle{\color{magenta}\textsf{#1}}}
定义一个新版本,将
\title
其颜色设为洋红色,并将其放入无衬线字体中。太棒了!