我怎样才能强制乳胶不出现这种形式的换行符?
假设,此代码
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}