带有单破折号的复合页码

带有单破折号的复合页码

我的一个参考文献的页码为 12-2,其中 12 是章节,2 是此章节的页码。我想用 来引用它,citep[12-2]{xy}但它被转换成双破折号页码范围,结果为[1, pp. 12-2]。

其他解决方案建议使用类似\citep[12{-}2]或的方法,\def\nbhyph{-\nobreak} \citep[12\nbhyph 2]但这两种解决方案都会导致[1, 12-2]没有“p。”。我可以通过p.手动添加 ie 来解决这个问题,citep[p.~12{-}2]{xy}但这似乎破坏了设计。

有没有更通用的解决方案?

梅威瑟:

\documentclass{article}
\usepackage[backend=bibtex, style=ieee, natbib=true]{biblatex}
\begin{filecontents}{bib.bib}
@Book{lamport94,
    author = "Leslie Lamport",
    title = "LaTeX: A Document Preparation System",
    year = 1994
}
\end{filecontents}
\addbibresource{bib}
\begin{document}

single dash \citep[12-2]{lamport94}

\def\nbhyph{-\nobreak}
nbhyph \citep[12\nbhyph 2]{lamport94}

bracelet dash \citep[12{-}2]{lamport94}

bracelet dash with manual "p." \citep[p.~12{-}2]{lamport94}
\end{document}

答案1

这并不是说这比 OP 已经探索过的替代方案更好,但它避免手动放置“p”。它的工作原理是使用活动符号.代替“页码破折号”,这样它就不会被解释为“页码范围”,而这正是所遇到的根本问题。

缺点是必须\citep在其自己的组中设置,并且.在调用之前使其处于活动状态。

\documentclass{article}
\usepackage[backend=bibtex, style=ieee, natbib=true]{biblatex}
\begin{filecontents}{bib.bib}
@Book{lamport94,
    author = "Leslie Lamport",
    title = "LaTeX: A Document Preparation System",
    year = 1994
}
\end{filecontents}
\addbibresource{bib}
\catcode`.=\active
\def.{-}%
\catcode`.=12
\begin{document}

active dot {\catcode`.=\active \citep[12.2]{lamport94}}

\end{document}

在此处输入图片描述

答案2

您可以使用以下方法禁用-被识别为范围分隔符(然后您将希望将其视为 NumChar)

\DeclareRangeChars{~,;+/}
\DeclareNumChars*{-}

然而,我相信,这造成的问题比它解决的问题还多,因为现在\cite[12-34]{sigfridsson}不再被认可为一个范围;你必须写下\cite[12\bibrangedash 34]{sigfridsson}或类似的东西。


因为我相信这样的页面12-2不会经常出现,所以我会采用你的解决方案,为该连字符定义一个新命令

\def\pnhyph{-}

然后为了确保我们仍然获得我们需要的页面前缀

\NumCheckSetup{\let\pnhyph\empty}

在检查我们是否有页码时,这只是忽略了该命令。

平均能量损失

\documentclass{article}
\usepackage[backend=bibtex, style=ieee, natbib=true]{biblatex}

\addbibresource{biblatex-examples.bib}

\def\pnhyph{-}
\NumCheckSetup{\let\pnhyph\empty}

\begin{document}
single dash \citep[12-2]{sigfridsson} \citep[12\bibrangedash 2]{sigfridsson}

\verb|\pnhyph| \citep[12\pnhyph 2]{sigfridsson}
  \citep[12\pnhyph 2--13\pnhyph 3]{sigfridsson}
  \citep[12\pnhyph 2-13\pnhyph 3]{sigfridsson}

bracelet dash with manual \verb|\pno| \citep[\pno~12{-}2]{sigfridsson}
\end{document}

示例输出

相关内容