# How do I use the fnpct package with natbib?

I'm using natbib with the super option, which generates citation call-outs in the form of superscript numerals. These numerals look quite a bit like footnote markers. I'd like to use the fnpct package to move the citation call-out numerals outside of the punctuation and improve the kerning. Unfortunately, by default it only works with \footnotes instead of natbib's \cites. According to chapter 8 of the documentation and this answer, you can hack fnpct together with Biblatex by adding the command \AdaptNoteOpt\cite\multcite to the preamble. But I'm using natbib and BibTeX instead of biblatex, and if I try adding that command my TeX capacity gets exceeded.

MWE: trying to compile

\documentclass{article}
\usepackage[super,compress]{natbib}
\usepackage{fnpct}

\begin{document}

Hello world \cite{Anderson}.

\end{document}


results in the error message

! TeX capacity exceeded, sorry [main memory size=5000000]. \l__xparse_args_tl ...{Anderson}{Anderson}{Anderso n}{Anderson}{Anderson}{And...

It seems that for some reason the \AdaptNoteOpt command is causing the parser to duplicate {Anderson} umpteen times. How do I fix this?

Edit: The reason that I want to do this is explain in this question. I want the citation superscripts to be outside of the punctuation. If I do it manually (Hello world.\cite{Anderson}), then there's a bit too much horizontal space between the period and the superscript. I'd like to bring the superscript in a point or two closer to the punctuation mark (although not directly above it), which apparently can be done using the fnpct package. If there's an easier way to do that which doesn't require the package, I'd accept that as well.

• You don't need this with Biblatex, do you? You can switch the automatic punctuation stuff on and use that. If Biblatex is an option, you can use it with the natbib compatibility setting. – cfr Jun 10 '18 at 3:44
• I wouldn't sacrifice logical punctuation for improved kerning. In any case, where should the markers be for your language or for the requirements you need to meet? That's really what matters - it isn't a case of what you happen to fancy doing, but what's correct for your linguistic and submission/publication context. – cfr Jun 10 '18 at 3:47
• @cfr Edited to clarify. – tparker Jun 10 '18 at 4:01
• Depending on engine, microtype might be an option? – cfr Jun 10 '18 at 4:06
• @cfr I'm using Microtype in my real use case, but it doesn't help. – tparker Jun 10 '18 at 13:46

natbib defines \cite with \DeclareRobustCommand\cite which causes a problem here.

The definition of \cite is now \protect\cite␣ where the name of the internal macro \cite␣ includes a trailing space which I've indicated with ␣.

A solution is

\expandafter\AdaptNoteOpt\csname cite \endcsname\multcite


where the blank after cite is crucial.

\documentclass{article}
\usepackage[super,compress]{natbib}
\usepackage{fnpct}