自动从 PDF 文件导入页面并向其中的一些页面添加文本

自动从 PDF 文件导入页面并向其中的一些页面添加文本

我正在尝试使用 LaTeX 来记录讲座笔记,但无法按照我想要的方式实现。对于每堂讲座,我都可以访问一个包含演示幻灯片的 PDF 文件,其中一张幻灯片对应一页。我希望能够导入这些幻灯片并将它们放在文档页面的顶部,然后在下面显示与该幻灯片相关的文字。在讲座期间,我会写一些类似的东西\slide{23}{Example text},让“示例文本”显示在幻灯片 23 下方。我不会为每张幻灯片写东西,所以它们需要添加到每页的顶部,而我不需要写,\slide{24}{}例如,如果我对幻灯片 24 没有什么要说的。

我是 LaTeX 的新手,所以我不知道从哪里开始做这样的事情,如果能提供一些建议或有用的链接,我将不胜感激。我的总体思路是这样的:

获取要导入的 pdf 文件的页数

\pdfximage{lecture_slides.pdf}
\the\pdflastximagepages

注意:我将使用pdflatex,因此这应该可行。

定义一个以数字和字符串作为强制参数的命令\slide{}{}。该数字保存在一个列表中,该列表包含已添加文本的所有幻灯片的编号。

定义一个命令\importslides{path},计算 pdf 文件的页数(如上所述),然后使用 导入幻灯片\includegraphics[page number]{path}。据推测,我会为此使用从 1 到文件中的页数的 for 循环。对于每一页,命令都必须检查带有文本的幻灯片列表,如果列表中存在该特定幻灯片,则在页面下方添加与其关联的字符串。

这是解决这个问题的好方法吗?有人对如何进行有什么建议吗?或者我可以在哪里找到有关如何在 LaTeX 中进行此类编程的信息?

答案1

更新改进版本(旧版本在最后)

间距等无法直接自动化。每个幻灯片文件都需要进行一些手动调整。

\documentclass[a5paper]{article}

\usepackage{pdfpages}
\usepackage{pgffor}
\usepackage{xparse}
\usepackage{blindtext}

\newlength\slidetextdistance

\setlength{\slidetextdistance}{0.48\textheight}
\NewDocumentCommand{\mypagecommand}{+m}{%
  \vspace*{\slidetextdistance}

  #1
}

\newtoks\localtok% To grab the possible `\par` in the third argument. 


\NewDocumentCommand{\importsheet}{O{}m+o}{%
  \IfFileExists{#2.pdf}{%
    \IfValueTF{#3}{%
      \localtok={#3}
      \includepdf[offset=0 0.4\textheight,frame,column,pagecommand={\mypagecommand{\the\localtok}},scale=0.9,#1]{#2.pdf}
      \localtok={}
    }{%
      \includepdf[offset=0 0.4\textheight,frame,scale=0.9,#1]{#2.pdf}
    }%  
  }{%
    Sorry, not available
  }%
}
\newcommand{\myslidetext}[1]{\noindent\textbf{Slide #1}\par \blindtext}

\begin{document}
\pagestyle{empty}
% Use some in a loop, just for demonstration
\foreach \x in {1,...,10} {% 
  \importsheet[pages=\x]{gravitation_slides}[\noindent\textbf{Slide \x}\par \blindtext]
}
% Import some special one, without comments
\importsheet[pages=15]{gravitation_slides} % No slide text
\end{document}

在此处输入图片描述


这是一个例子,并不完美,特别是我目前不知道如何计算外部文件中的幻灯片数量。

\documentclass[a4paper]{article}

\usepackage[lmargin=1.5cm,rmargin=1.5cm,tmargin=1.5cm,bottom=1.5cm]{geometry}
\usepackage{pdfpages}
\usepackage{pgffor}
\usepackage{xparse}
\usepackage{blindtext}

\newcommand{\mypagecommand}[1]{%
  \vspace*{0.9\textheight}
  #1
}
\NewDocumentCommand{\importsheet}{O{}m+o}{%
  \IfFileExists{#2.pdf}{%
    \IfValueTF{#3}{%
      \includepdf[frame,column,pagecommand={\mypagecommand{#3}},noautoscale=true,scale=0.9,#1]{#2.pdf}
    }{%
      \includepdf[noautoscale=true,scale=0.9,#1]{#2.pdf}
    }%  
  }{%
    Sorry, not available
  }%
}

\begin{document}
\foreach \x in {1,...,10} {%
  \importsheet[pages=\x]{mysource}[Slide \x \blindtext]
}
\end{document}

在此处输入图片描述

相关内容