我遇到的问题和楼主几乎一样这个问题:我使用natbib
设置了特定参数的包,在我的例子中,如这个小例子所示:
\documentclass{article}
\usepackage[ % Citations formatting
numbers, %% Numbered instead of author+year
square, %% In square brackets
comma, %% Comma-seperated
compress, %% Range instead of sequence
super %% Superscript
]{natbib}
\begin{document}
Cite works perfectly\cite{ref1} but making it non-superscript does not [\citenum{ref1}].
\begin{thebibliography}{1}
\bibitem{ref1} Author, Title, Publisher, Location, Edition, Year.
\end{thebibliography}
\end{document}
这些包设置给了我在方括号中编号的引用,并在上标(高于线)使用时\cite{...}
。如所愿。
但我确实偶尔希望删除上标,只将内联引用写成[1]
。
显然,这并不容易。似乎没有办法super
从特定事件中删除\cite{...}
。相反文档\citenum{...}
给出删除上标并仅显示纯参考编号的命令1
- 但方括号也被删除了!
然后我想“没问题,我只需手动添加方括号并写入[\citenum{...}]
”,如上面的工作示例所示。但这给出了这样的结果:
中有一个多余的空格[ 1]
!
所以,问题是:我该如何解决这个问题并在方括号中获得不带任何空格的非上标引用?
编辑
链接的问题通过定义新的自定义参数提供了一种解决方案。对于我的目的来说,这似乎有点过头了,因为我需要将非上标引用写在一个很小的地方。我问的是是否有更简单的方法,我可能错过了,例如,空格是否可以被另一个 latex 命令删除,或者包是否可以轻松调整。根据缺乏回应,我猜情况并非如此。
答案1
您只需要说明natbib
您想要括号。默认情况下,\citenum
集合\NAT@parfalse
(无括号)。
\begin{filecontents*}{\jobname.bib}
@article{test1,
author={A. Uthor},
title={Title},
journal={Journal},
year=2017,
}
@article{test2,
author={W. Riter},
title={Title},
journal={Journal},
year=2016,
}
\end{filecontents*}
\documentclass{article}
\usepackage[ % Citations formatting
numbers, %% Numbered instead of author+year
square, %% In square brackets
comma, %% Comma-seperated
compress, %% Range instead of sequence
super %% Superscript
]{natbib}
\usepackage{xpatch}
\makeatletter
\xpatchcmd\citenum{\NAT@parfalse}{\NAT@partrue}{}{}
\makeatother
\begin{document}
With \citenum{test1} blbla\cite{test1}
With \citenum{test1,test2} blbla\cite{test1,test2}
\bibliographystyle{plainnat}
\bibliography{\jobname}
\end{document}
使用sort&compress
选项代替compress
,你会得到
答案2
对于 LaTeX 标准,@lockstep 的解决方案(遗憾的是)并不算太过分,我建议您使用它。但是,对于一次性问题,它可以更容易地完成。
您可以局部重新定义citenumfont
以包含括号,这样不会添加空格。请注意,您需要在组中执行此操作,否则常规引用会得到两组括号。
您还可以应用简单但有风险的手动负空间解决方法(参见@Troy 的评论)。
梅威瑟:
\documentclass{article}
\usepackage[ % Citations formatting
numbers, %% Numbered instead of author+year
square, %% In square brackets
comma, %% Comma-seperated
compress, %% Range instead of sequence
super %% Superscript
]{natbib}
\begin{document}
With \texttt{citenumfont}: {\renewcommand{\citenumfont}[1]{[#1]}\citenum{abc}}
With negative \texttt{hspace}: [\hspace*{-4px}\citenum{abc}]
Regular citation\cite{abc}
\bibliographystyle{plain}
\bibliography{sampleref}
\end{document}
结果:
答案3
通过命令插入空格\NAT@spacechar
。您可以重新定义此命令以不执行任何操作,但由于它也用于其他地方,因此这可能会产生不必要的副作用,即删除您不想要的空格。
一个更安全的解决方案是补丁\citenum
:
\documentclass{article}
\usepackage[ % Citations formatting
numbers, %% Numbered instead of author+year
square, %% In square brackets
comma, %% Comma-seperated
compress, %% Range instead of sequence
super %% Superscript
]{natbib}
%\makeatletter
%\let\NAT@spacechar\relax
%\makeatletter
\usepackage{xpatch}
\makeatletter
\xpatchcmd\citenum{\NAT@spacechar}{\unkern}{}{\fail}
\makeatother
\begin{document}
With [\citenum{ctan}] blbla
\bibliographystyle{plain}
\bibliography{biblatex-examples}
\end{document}