Typeset : upLaTeX+dvipdfmx
xr パッケージを利用した相互参照を実行すると,相互参照される番号が上手く生成されない.
状況を再現する最小コード.
main.tex
\RequirePackage{plautopatch}
\documentclass[uplatex,dvipdfmx,report]{jlreq}
\usepackage{xr-hyper}
\usepackage{hyperref}
\usepackage{docmute}
\externaldocument[1:]{xr-test1}
\externaldocument[2:]{xr-test2}
\begin{document}
\chapter{TEST xr pakcage}
\ref{test1} and \ref{test2}
\input{xr-test1.tex}
\input{xr-test2.tex}
\end{document}
以下の警告が表示された.
Invalid page number (0)
(hyperref) for remote PDF file.
(hyperref) Using page 1.
xr-test1.tex
\csname docmute\endcsname
\RequirePackage{plautopatch}
\documentclass[uplatex,dvipdfmx]{jlreq}
\usepackage{xr-hyper}
\usepackage{hyperref}
\usepackage{docmute}
\externaldocument[1:]{xr-test1}
\externaldocument[2:]{xr-test2}
\begin{document}
\section{xr test1}\label{test1}
This is section\ref{1:test1}.
Reference: \ref{2:test2}
\end{document}
xr-test2.tex
\csname docmute\endcsname
\RequirePackage{plautopatch}
\documentclass[uplatex,dvipdfmx]{jlreq}
\usepackage{xr-hyper}
\usepackage{hyperref}
\usepackage{docmute}
\externaldocument[1:]{xr-test1}
\externaldocument[2:]{xr-test2}
\begin{document}
\section{xr test2}\label{test2}
This is section\ref{test2}.
Reference: \ref{1:test1}
\end{document}
xr-testX.tex
では,それぞれの相互参照が適用される.
ただし,ファイルをまたぐセクション番号はともに"01" になる.
main.tex
では,xr パッケージを介した相互参照は"01" となり,xr パッケージを介さない相互参照は通し番号となった.
また,xr パッケージを介した相互参照はチャプター番号を考慮していなかった.
ファイル間をまたぐ相互参照には番号を付与してほしいが,main.tex
で統合した際にはxr パッケージを使用する前と同様に通し番号を正常にしてほしい.
もちろん,それぞれのファイルで以下のようにして\input
されるファイルの相互参照を作成して,main.tex
ではxr パッケージを使用しなければ,main.tex
での相互参照の問題は解決する.
- \externaldocument[1:]{xr-test1}
- \externaldocument[2:]{xr-test2}
+ \externaldocument{xr-test1}
+ \externaldocument{xr-test2}