有没有办法用 LaTeX 注释 pdf?

有没有办法用 LaTeX 注释 pdf?

可能重复:
如何注释pdflatex生成的PDF文件?

有没有办法用 LaTeX 注释来注释 pdf?我的意思是我没有源代码的 pdf(或者甚至可能不是用 LaTeX 本身编写的)。

我提出这个问题的动机是,我真的很想以数字方式注释我的讲义,以免丢失重要的笔记,但讲师不喜欢将他的笔记的源代码发布给学生的想法。(即,我认为要求提供源代码并不顺利,如果可以避免的话,我不想再向另一位讲师问同样的问题:-))

我可以尝试自己把它们打出来,但当时间有限时,当我有更紧急的工作需要优先处理时,尝试这样做充其量也只是雄心勃勃而已。

我使用 Linux,我的 PDF 查看器是 Okular,主要用于数学/物理类型的工作(如果这是有用的信息)。能够以某种方式做到这一点会很方便,所以我愿意接受任何可能有帮助的建议!

答案1

下面是一个使用的示例pdfpages将 PDF 加载为背景,并使用 TikZ 在其上绘图。以下代码会抱怨缺少图像(tikzmark_example.pdf),但希望可以让您了解我在评论中所说的内容。我保留了网格,因为这就是我计算坐标的方式。这是根据我用来“填写”PDF 表单的代码改编的,通过在表单上书写 - 在其他情况下,我可能会使用一组不同的辅助宏来更轻松地放置注释。

\documentclass{article}
%\url{http://tex.stackexchange.com/q/85651/86}
\usepackage[svgnames]{xcolor}
\usepackage{pdfpages}
\usepackage{tikz}

\tikzset{
  every node/.style={
    anchor=mid west,
  }
}

\makeatletter
\pgfkeys{/form field/.code 2 args={\expandafter\global\expandafter\def\csname field@#1\expandafter\endcsname\expandafter{#2}}}

\newcommand{\place}[3][]{\node[#1] at (#2) {\csname field@#3\endcsname};}
\makeatother

\newcommand{\xmark}[1]{\node at (#1) {X};}



\begin{document}

\foreach \mykey/\myvalue in {
  ctsfn/{Defined in Week 1},
  metsp/{Defined in Week 3},
} {
  \pgfkeys{/form field={\mykey}{\myvalue}}
}

\includepdf[
  pages=1,
  picturecommand={%
    \begin{tikzpicture}[remember picture,overlay]
%%% The next lines draw a useful grid - get rid of them (comment them out) on the final version
    \draw[gray] (current page.south west) grid (current page.north east);
\foreach \k in {1,...,28} {
      \path (current page.south east) ++(-2,\k) node {\k};
}
\foreach \k in {1,...,20} {
      \path (current page.south west) ++(\k,2) node {\k};
}
%%% grid code ends here
\tikzset{every node/.append style={fill=Honeydew,font=\large}}
\place[name=ctsfn]{14cm,17cm}{ctsfn}
\place[name=metsp]{11cm,9cm}{metsp}
\draw[ultra thick,blue,->] (ctsfn) to[out=135,in=90] (9cm,17.3cm);
\draw[ultra thick,blue,->] (metsp) to[out=155,in=70] (6cm,9cm);
    \end{tikzpicture}
  }
]{tikzmark_example.pdf}

\end{document}

上述操作的结果是:

带注释的讲座幻灯片

答案2

虽然可以使用 LaTeX 来注释第三方 PDF,但这并不是一个有用的方法。

编辑:

我 2012 年的回答(如下)已经过时了。在 Linux 下,有许多工具可以注释甚至更改 PDF。Okular 可以很好地注释 PDF,例如 »Master PDF Editor« 是一个商业工具。

Windows 下有免费的 PDF XChange Editor(未经测试),我正在使用一个名为 PDF Annotator 的商业工具。

但还有很多,取决于您的需要。

为了注释 PDF,我经常将其虚拟地打印在大型横向页面上。如果要注释的页面是 DIN A4,我会将页面放在 DIN A3 横向上,这样就有足够的空间来注释。

\documentclass[DIV=30, paper=A3, paper=landscape]{scrartcl}

\usepackage{pdfpages}

\begin{document}

\includepdf[pages=-, offset= -300 0]{Origin.pdf}

\end{document}

(2012 年的旧答案:有很多软件可以满足您的需求,但更多是在 Windows 方面。在 Linux 下,我使用 flpsed, http://flpsed.org/flpsed.html。

相关内容