有没有办法引用memoir
其他文档类别中的标签?
我已经在 中撰写了论文,memoir
现在正在 中准备幻灯片beamer
,我想在其中引用论文中的元素(章节名称和页码)。问题是,memoir
使用仅限回忆录的宏(在本例中为 )将标签写入辅助文件\M@TitleReference
,beamer
无法解析。
最小示例:给定两个文件thesis.tex
:
\documentclass{memoir}
\usepackage{hyperref}
\begin{document}
\chapter{Test}
\label{cha:test}
\end{document}
和talk.tex
:
\documentclass{beamer}
\usepackage{xr-hyper}
\externaldocument{thesis}
\begin{document}
Ref: \ref{cha:test}
\end{document}
我期望 talk.pdf 包含文本Ref: 1
,但实际上没有。编译thesis.tex
然后talk.text
会导致错误:
! Undefined control sequence.
<argument> {\M@TitleReference
{1}{Test}}{1}{Test}{chapter.1}{}
l.4
memoir
和的手册中beamer
没有提到xr
或xr-hyper
反之亦然。谷歌搜索也没有帮助我,因此我被难住了。
注意:省略hyperref
没有thesis.tex
区别,使用xr
代替也没有区别xr-hyper
。
答案1
该命令\M@TitleReference
在类中是未知的beamer
,并且在类中被定义(嗯,\let
到\@firstoftwo
。memoir
)。它的定义可以被“窃取”并成对引入到beamer
文档中,因为宏名中\makeatletter...\makeatother
有一个字符。@
\documentclass{beamer}
\usepackage{xr-hyper}
\usepackage{hyperref}
\makeatletter
\let\M@TitleReference\@firstoftwo%
\makeatother
\externaldocument{thesis}
\begin{document}
\ref{cha:test}%
\end{document}