natbib 和 multibib 的问题

natbib 和 multibib 的问题

与我的相关上一个问题,可以通过更改 TeXStudio 配置来解决

bibtex.exe -- ?*.aux

natbib我仍然对和的组合感到困惑multiref

我的例子

\documentclass[a4paper]{article}
\usepackage{filecontents}

\begin{filecontents}{bib.bib}
    @book{tolkien_93,
        title={The Lord of the Rings: Part 1: The Fellowship of the Ring},
        author={Tolkien, John Ronald Reuel},
        year={1993},
        publisher={Christian Blind Mission International}
    }
    
    @book{tolkien_66,
        title={The Lord of the Rings. Part 2: The Two Towers},
        author={Tolkien, John Ronald Reuel},
        year={1966},
        publisher={Allen and Unwin}
    }
    
    @book{tolkien_55,
        title={The Lord of the Rings. Part 3: The Return of the King},
        author={Tolkien, John Ronald Reuel},
        year={1955},
        publisher={Allen \& Unwin}
    }
    
    @book{tolkien_79,
        title={The silmarillion},
        author={Tolkien, JR John Ronald Reuel},
        year={1979},
        publisher={Random House LLC}
    }
\end{filecontents}

\usepackage[
    colorlinks=true,
    linkcolor=black, 
    pagecolor=black, 
    citecolor=black, 
    filecolor=black, 
    urlcolor=black, 
    menucolor=black,
]{hyperref}

\usepackage[numbers, super, sort&compress, square]{natbib}

\makeatletter
    \def\@mb@citenamelist{cite,citep,citet,citealp,citealt,citepalias,citetalias}
\makeatother

\usepackage[resetlabels]{multibib}
\newcites{pub}{Publications}

\usepackage{lipsum}
\usepackage{booktabs}

\defcitealias{tolkien_93}{HDR-1}
\defcitealias{tolkien_66}{HDR-2}
\defcitealias{tolkien_55}{HDR-3}
\defcitealias{tolkien_79}{silmarillion}

\begin{document}
    
    \section{Lipsum \protect \citepaliaspub{tolkien_93}}
    
    \lipsum[2][1]\cite{tolkien_66} \lipsum[5][7]\citepub{tolkien_93} \\ 
    \lipsum[1][2]\citepaliaspub{tolkien_79} \lipsum[25][13]\citepalias{tolkien_55}.
    
    \begin{table}[htb!]
        \centering
        \caption[short caption \protect \citepaliaspub{tolkien_93}]{caption. \protect \citepaliaspub{tolkien_93}}
        \begin{tabular}{lcc}
            \toprule
            lipsum & lipsum & lipsum \\ \midrule
            lipsum & lipsum & lipsum \\
            lipsum & lipsum & lipsum \\
            \bottomrule
        \end{tabular}
    \end{table}
        
    \bibliographystyle{angew}
    \bibliography{bib}
    
    \let\noopsort\undefined
    \let\printfirst\undefined
    \let\singleletter\undefined
    \let\switchargs\undefined   
    
    \bibliographystylepub{angew}
    \bibliographypub{bib}
    
\end{document}

确实产生了错误Use of \mb@@citex doesn't match its definition. ...ipsum \protect \citepaliaspub{tolkien_93}}

有没有什么方法可以解决这个问题?这个问题是由caption环境引起的,因为没有环境一切都可以正常工作。

编辑1

我一发布问题,就找到了解决方案这里。使用时\protect它对 工作正常caption,所以我也在 中尝试了它section,并且即使添加 之后错误仍然相同\protect

编辑2

另外,我做了一些研究,发现这个答案,其中使用\cite<seq>显示\section使用没有错误\protect,但对我来说错误 Use of \mb@@citex doesn't match its definition. ...ipsum \protect \citepaliaspub{tolkien_93}} 仍然存​​在。有什么建议,我做错了什么?

编辑3

当我取消注释时\usepackage{hyperref}\protect它的工作方式应如此,并且根据这个答案,包的顺序也起到了额外的作用。所以当我找到答案的一部分时,另一个问题就出现了。

答案1

\citepaliaspubhyperref 不知道在书签中做什么,你需要提供一个合理的定义,或者使用

 \section{Lipsum \texorpdfstring{\protect\citepaliaspub{tolkien_93}}{bookmark text}} 

可能的定义是

\pdfstringdefDisableCommands{%
 \def\citepaliaspub#1{\csname al@#1\@extra@b@citeb\endcsname}}

这将在书签中给出以下内容:

在此处输入图片描述

相关内容