我需要从 pdf 文件中获取某些部分(例如pdftk)。目录中给出的页码是逻辑数字(例如前言中的罗马数字 I 到 XX,正文从阿拉伯数字 1 开始,尽管是第 21 页的物理页码)。我可以获得生成的文档特定部分(章节、小节、段落……)的物理页码吗?
答案1
A) 获取 PDF 文档页面的“物理”编号,有不同的可能性,例如:
手动计数(当然;可能很麻烦,而且容易出错)
使用 Adobe Reader 还显示物理页码:“对于 pdf 文件的逻辑页码显示,请将逻辑页码与 hyperref 一起使用! - 在 Adobe 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}
因为您重置了所有样式的页脚,所以它将在所有页面上发生更改(甚至章节和标题页)。