![有没有办法用 LaTeX 注释 pdf?](https://linux22.com/image/259500/%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E7%94%A8%20LaTeX%20%E6%B3%A8%E9%87%8A%20pdf%EF%BC%9F.png)
可能重复:
如何注释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。)