查找特定逻辑页的物理页码

查找特定逻辑页的物理页码

我需要从 pdf 文件中获取某些部分(例如pdftk)。目录中给出的页码是逻辑数字(例如前言中的罗马数字 I 到 XX,正文从阿拉伯数字 1 开始,尽管是第 21 页的物理页码)。我可以获得生成的文档特定部分(章节、小节、段落……)的物理页码吗?

答案1

A) 获取 PDF 文档页面的“物理”编号,有不同的可能性,例如:

  • 手动计数(当然;可能很麻烦,而且容易出错)

  • 使用 Adob​​e Reader 还显示物理页码:“对于 pdf 文件的逻辑页码显示,请将逻辑页码与 hyperref 一起使用! - 在 Adob​​e Reader X 中启用:Edit > Preferences (Ctrl+k) > Page Display > Page Content and Information > Use logical page numbers。 - 使用 hyperref 包和选项 plainpages=false 。显示内容将是例如7 (7 of 9),或者,如果使用罗马数字而不是阿拉伯数字,VII (7 of 9)并且当使用不同的页码时 [...] 例如 10 页罗马数字后为阿拉伯数字:17 (27 of 30)。请使用编译的 pageslts-example 文件尝试此操作!”(第 4 页,共页面手动的)

  • 使用页面\theCurrentPage在页脚中打印物理页码()的包:

    \documentclass{article}
    
    \usepackage{pageslts}
    
    \makeatletter
      \renewcommand{\@evenfoot}{%
        \hspace*{\fill}%
        Page \thepage\ (\theCurrentPage\ of \lastpageref{LastPages})%
        \hspace*{\fill}%
       }
      \renewcommand{\@oddfoot}{\@evenfoot}
    \makeatother
    
    \begin{document}
    \pagenumbering{roman}
    Test
    \newpage
    More test text.
    \newpage
    \pagenumbering{arabic}
    Now look at the first number in the parentheses in the footer!
    
    \end{document}
    

    这至少需要运行两次编译器。确定要查找的页码后,只需删除\makeatletter和之间的代码\makeatother并重新编译即可。

B) “我需要从 pdf 文件中获取某些部分”。为此,您不一定需要知道物理页码。例如,您可以使用选择项包。例如

\documentclass{article}

\usepackage{selectp}
\outputonly{1,0,1}

\begin{document}
\pagenumbering{roman}
Test
\newpage
More test text.
\newpage
\pagenumbering{arabic}
Still more text.

\end{document}

将仅允许输出第 i 页(1;3 页中的第 1 页)和第 1 页(3 页中的第 3 页)。顺序不是随机的,但必须是页面生成的顺序;通常这意味着数字必须始终增加。

使用罗马数字:1-3,1-3 打印第 i-iii、1-3 页

和 0, 1-3 打印第 1-3 页。

使用前需要一个完整的编译文件!(并且您必须将 i 转换为 1,但这不应该是问题。)

答案2

对于使用回忆录课程的人来说,只需几行就可以完成斯蒂芬的回答:

\documentclass[a4paper,english, final]{memoir}

\usepackage{lipsum}
\usepackage{pageslts}

\makeevenfoot{ruled}{}{}{Page \thepage\ (\theCurrentPage\ of \lastpageref{LastPages})}
\makeoddfoot{ruled}{Page \thepage\ (\theCurrentPage\ of \lastpageref{LastPages})}{}{}
\makeevenfoot{plain}{}{}{Page \thepage\ (\theCurrentPage\ of \lastpageref{LastPages})}
\makeoddfoot{plain}{Page \thepage\ (\theCurrentPage\ of \lastpageref{LastPages})}{}{}
\makeevenfoot{empty}{}{}{Page \thepage\ (\theCurrentPage\ of \lastpageref{LastPages})}
\makeoddfoot{empty}{Page \thepage\ (\theCurrentPage\ of \lastpageref{LastPages})}{}{}

\title{This is a test document}
\author{Myself}

%------------------------------------------------------------

\begin{document}

\pagestyle{ruled}

\frontmatter
\maketitle
\tableofcontents

\mainmatter

\chapter{Chapter 1}

\section{First section}
\lipsum
\section{Second section}
\lipsum

\end{document}

因为您重置了所有样式的页脚,所以它将在所有页面上发生更改(甚至章节和标题页)。

相关内容