更新

更新

我怎样才能强制乳胶不出现这种形式的换行符?

假设,此代码

First line~\cite{ref13,ref14,ref15,ref16,ref17}. Second line.

产生以下输出(由于行尾而产生换行符):

第一行[13-
17]. 第二行

虽然我想强制执行这样的操作:

第一
行[13-17].
第二行

我正在使用 biblatex。但我也想知道使用标准 latex 书目的答案。

更新

感谢@koleygr 提供的强力解决方案:

 \newcommand{\mcite}[1]{\mbox{\cite{#1}}}

答案1

更新

有了问题中的新信息,这似乎是 的一个很好的答案biblatex。对于标准书目,您需要修改相关bst文件以将 替换为--\textendash但这总是很麻烦。

\documentclass{article}
\usepackage[style=numeric-comp]{biblatex}
\addbibresource{biblatex-examples.bib}
\DefineBibliographyExtras{english}{%
  \renewrobustcmd*{\bibrangedash}{\textendash}
}
\begin{document}
\fbox{\parbox{3.8cm}{%
\begin{sloppypar}
Filler text filler text \cite{baez/article,bertram,doody,gillies}.
\end{sloppypar}

\noindent\textbf{cf.\@ default behaviour}

Filler text filler text [1--4].}}
\end{document}

在此处输入图片描述


您的问题有点不清楚,但我认为您指的是页面范围?

-和都--包含(我认为)一个隐含的\penalty\hyphenpenalty,所以它们会像您所看到的那样中断。

使用标准书目和的默认设置biblatex,您可以使用\cite[13\textendash 17]{entry},这不会中断。

如果我使用,biblatex我会使用\mkcomprange(请参阅手册中的表 13 进行设置)并确保\bibrangedash不易损坏(在英语中默认定义为\textendash\penalty\hyphenpenalty)。

笔记:这似乎不适用于xelatex允许在之后休息的情况\textendash。也许其他人可以帮助解决这个问题。)

像这样:

\documentclass{article}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{book,
  author = {Author},
  title = {Title}
}
\end{filecontents}
\usepackage[style=authortitle]{biblatex}
\addbibresource{\jobname.bib}
\setcounter{mincompwidth}{1000}
\DefineBibliographyExtras{english}{%
  \renewrobustcmd*{\bibrangedash}{\textendash}
}
\DeclareFieldFormat{postnote}{\mkcomprange[{\mkpageprefix[pagination]}]{#1}}
\begin{document}
\hsize 4cm

\begin{sloppypar}
\cite[13-17]{book}
\end{sloppypar}

\noindent
\textbf{cf.\@ default behaviour}

\DeclareFieldFormat{postnote}{\mkpageprefix[pagination]{#1}}
\cite[13--17]{book}

\noindent
\textbf{and with} \verb+\textendash+

\begin{sloppypar}
\cite[13\textendash 17]{book}
\end{sloppypar}

\end{document}

在此处输入图片描述

相关内容