我的一个参考文献的页码为 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}