我正在使用一系列小技巧来使用IEEEtran
with natbib
(我喜欢\citeauthor
和喜欢)。在一份十一页的文档中,使用 和不使用 都会产生完全相同的 PDF 输出\ifhack
,但有一个例外:“[” 后的换行符。
如果没有黑客,我得到
A [1],
[2]
通过 hack,我得到了
A [1], [
2
我该怎么做才能解决这个问题?这是我的 MWE:
\documentclass{IEEEtran}
\newif\ifhack
\hacktrue
\ifhack
\let\theoldbibliography\thebibliography
\usepackage[numbers,sort&compress]{natbib}
\let\thebibliography\theoldbibliography
\makeatletter
% https://tex.stackexchange.com/questions/47317/
\def\NAT@def@citea{\def\@citea{\NAT@separator}}% removed \NAT@space
\usepackage{etoolbox}
\patchcmd{\NAT@citexnum}{--}{]--[}{}{}
\makeatother
\bibpunct{[}{]}{], [}{n}{}{,}
\else
\usepackage{cite}
% https://tex.stackexchange.com/questions/229126/
\AtBeginDocument{\let\normalsfcodes\frenchspacing}
\fi
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@article{a}
@article{b}
\end{filecontents}
\begin{document}
\parbox{1.2cm}{A \cite{a,b}}
\bibliographystyle{IEEEtran}
\bibliography{\jobname}
\end{document}
答案1
用这个替换对的调用\bibpunct
就为我解决了这个问题:
\def\NAT@sep{], [}
\def\NAT@separator{\NAT@sep}% removed \NAT@penalty