MWE 如下。
\documentclass{book}
\usepackage{lipsum}
\usepackage{hyperref}
\usepackage{marginnote}%
\newcounter{original}
\newcommand{\bmark}{\ensuremath{|}}
%produce a breaking mark and a source page number-------------------
\newcommand{\original}{\refstepcounter{original}%increment page counter
\marginnote{\small\theoriginal}%print source page number in marginpar
\label{O\theoriginal}%add a label
\bmark{} %print breaking mark
}
\begin{document}
\frontmatter
\renewcommand{\thepage}{\Roman{page}}
\renewcommand{\theoriginal}{\Roman{original}}
\setcounter{original}{0}
\lipsum[1]
\original
\clearpage
\lipsum[2]
\original
\clearpage
\lipsum[3]
\original
\mainmatter
\renewcommand{\theoriginal}{\arabic{original}}
\setcounter{original}{0}
\chapter{Example}
\lipsum[4]
\original
\clearpage
\lipsum[5]
\original
\clearpage
\lipsum[6]
\original
\chapter{Reference tests}
Number \ref{O2}
\end{document}
如你所见,我\original
在上面定义了一个命令。我用它\original
来为现在重新输入的原书中的原文产生一个标记和一个源页面。
当我使用\ref{O2}
(参见底部的代码)来指代数字 2 时,该数字不大于由\original
时,它引用的是 II 而不是 2,尽管它以正确的方式打印 2。为什么?有办法解决吗?
答案1
确实不清楚您想要实现什么。
获得正确锚点的一个解决方案是将计数器链接到另一个计数器。
\documentclass{book}
\usepackage{lipsum}
\usepackage{marginnote}
\usepackage{hyperref}
\newcounter{parentoriginal}
\newcounter{original}[parentoriginal]
\newcommand{\resetoriginal}{\stepcounter{parentoriginal}}
\renewcommand{\theHoriginal}{\theparentoriginal.\arabic{original}}
\newcommand{\bmark}{\ensuremath{|}}
%produce a breaking mark and a source page number-------------------
\newcommand{\original}{%
\refstepcounter{original}%
\marginnote{\small\theoriginal}%print source page number in marginpar
\label{O\theoriginal}%add a label
\bmark{}%print breaking mark
}
\begin{document}
\frontmatter
\renewcommand{\thepage}{\Roman{page}}
\renewcommand{\theoriginal}{\Roman{original}}
\resetoriginal
\lipsum[1]
\original
\clearpage
\lipsum*[2]\original
\clearpage
\lipsum*[3]\original
\mainmatter
\renewcommand{\theoriginal}{\arabic{original}}
\resetoriginal
\chapter{Example}
\lipsum*[4]\original
\clearpage
\lipsum*[5]\original
\clearpage
\lipsum*[6]\original
\chapter{Reference tests}
Number \ref{O2}
\end{document}
另一个解决方案是修改\theHoriginal
。
\documentclass{book}
\usepackage{lipsum}
\usepackage{marginnote}
\usepackage{hyperref}
\newcounter{original}
\newcommand{\resetoriginal}{\setcounter{original}{0}}
\newcommand{\bmark}{\ensuremath{|}}
%produce a breaking mark and a source page number-------------------
\newcommand{\original}{%
\refstepcounter{original}%
\marginnote{\small\theoriginal}%print source page number in marginpar
\label{O\theoriginal}%add a label
\bmark{}%print breaking mark
}
\begin{document}
\frontmatter
\renewcommand{\thepage}{\Roman{page}}
\renewcommand{\theoriginal}{\Roman{original}}
\renewcommand{\theHoriginal}{F\arabic{original}}
\resetoriginal
\lipsum[1]
\original
\clearpage
\lipsum*[2]\original
\clearpage
\lipsum*[3]\original
\mainmatter
\renewcommand{\theoriginal}{\arabic{original}}
\renewcommand{\theHoriginal}{M\arabic{original}}
\resetoriginal
\chapter{Example}
\lipsum*[4]\original
\clearpage
\lipsum*[5]\original
\clearpage
\lipsum*[6]\original
\chapter{Reference tests}
Number \ref{O2}
\end{document}