![如何将 pdf 文件中的注释转换为 tex 文件中的更改](https://linux22.com/image/319983/%E5%A6%82%E4%BD%95%E5%B0%86%20pdf%20%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E6%B3%A8%E9%87%8A%E8%BD%AC%E6%8D%A2%E4%B8%BA%20tex%20%E6%96%87%E4%BB%B6%E4%B8%AD%E7%9A%84%E6%9B%B4%E6%94%B9.png)
我最近了解到一个pdfcomment
软件包,顾名思义,它可以在 pdf 文件中插入注释。所以 LaTeX 确实理解其中的一些内容。
我也知道synctex
:LaTeX 还知道 pdf 文件的哪个部分对应于源文件的哪个部分。
因此,我想知道是否有任何方法可以在已注释注释的 PDF 文件中找到注释(来自其他来源,可能是审阅者)并将其集成到源文件中。例如,这在替换文本方面不必完美;但大致如下:
% preamble
\newcommand\pdfcommentimported[1]{}
...
% text
\pdfcommentimported{NameOfReviewer suggested to add: "some text to add"}
\pdfcommentimported{NameOfReviewer suggested to replace "some text to remove" by "some text to add"}
这将大大简化其他人审阅 PDF 后修改 LaTeX 文档的过程。这可能吗?
答案1
该软件包pdfcomment
可让您或老师或教授在 LaTeX 源文件中添加注释。这些注释随后会显示在编译后的 pdf 文件中,例如在气泡框中。
向 pdf 文件插入注释的另一种方法取决于所使用的查看器。LaTeX 无法识别这些注释。
synctex 机制用于在 pdf 文件中定位一个特殊字母,并允许编辑器显示该代码。要实现您想要的功能,必须对该机制进行编程,使其识别这些查看器插入的注释并指向添加注释的位置。据我所知,该机制尚未实现。
所以我认为今天的答案是:不,今天不可能。
最后说一句:将所有收到的评论复制(最终不明确查看每条评论)到您的文档中真的有用吗?
我想不是!
评论是这样的注释:你可以用另一种方式来做,爱因斯坦的出生年份不是 1965 年或类似的年份。我从来没有遇到过所有更正或其他注释都必须整合到已检查的文档中的情况。
更好的方法是同时打开 tex 代码和 pdf 文件,然后检查 pdf 文件中的每个注释。如果检查结果为肯定,则通过改写文本或复制文本将注释添加到 tex 代码中(如有必要,请不要忘记引用!)。如果检查结果为否定,则继续下一个注释。
如果添加了评论,pdfcomment
您可以使用编辑器的搜索按钮轻松找到评论和需要重新修改的地方。
答案2
据我了解,该机制的工作原理如下synctex
:
PDF 中的任何内容与源中的任何内容之间没有直接关联。
当您使用该
--synctex=1
选项时,引擎(例如 pdfTeX)会编写一个附加文件(.synctex.gz
),将 PDF 中的位置与源中的位置链接起来。合适的 PDF 查看器会获取 PDF 中某个位置的位置并将其传递给编辑器。例如,我已将 Okular 配置为使用命令
kile --line %l
,并使用 Kile 作为编辑器。如果编辑器支持该功能,它将使用编译期间写入的文件来查找该位置和源中的相应位置。
然后编辑器移动到它查找到的源位置。(或者打开文件并移动到该位置。)
如果没有查找文件,PDF 内容和源内容之间就没有联系。
.synctex.gz
以下是简单的“Hello.”文档的示例文件:
SyncTeX Version:1
Input:1:<path to tex file>
Input:2:/usr/local/texlive/2015/texmf-dist/tex/latex/base/article.cls
Input:3:/usr/local/texlive/2015/texmf-dist/tex/latex/base/size10.clo
Input:4:<path to aux file>
Output:pdf
Magnification:1000
Unit:1
X Offset:0
Y Offset:0
Content:
!309
{1
[1,15:4736286,46220574:26673152,41484288,0
[1,15:8799518,46220574:22609920,40435712,0
[1,15:8799518,6571294:22609920,786432,0
h1,15:8799518,6571294:22609920,0,0
]
[1,15:8799518,44254494:22609920,36044800,0
(1,14:8799518,8865054:22609920,455111,0
h1,13:8799518,8865054:983040,0,0
x1,13:11439166,8865054
k1,14:31409438,8865054:19970272
g1,14:31409438,8865054
)
]
(1,15:8799518,46220574:22609920,422343,0
k1,15:19940638,46220574:11141120
x1,15:20268319,46220574
k1,15:31409438,46220574:11141119
)
]
]
!506
}1
Input:5:<path to aux file>
!50
Postamble:
Count:19
!24
Post scriptum:
如果我点击输出中的“Hello。”,Okular 会将我的位置传递给 Kile,Kile 会在中查找.synctex.gz
并发现它对应于13
源中的行,因此它会显示.tex
文件中的第 13 行。
[我说“大致”是因为显然还存在哪个文件、哪个页面等问题。但以上内容给出了总体思路。]
如果 PDF 已按原样注释,因此 PDF 中的位置仍与源中的位置足够对应,那么您可以使用添加的注释附近的内容位置移动到源中的相应位置。但是,如果 PDF 已添加封面页或内容本身已更改,那么这种方法就不太适用了。
然而,帕克斯允许您提取并重新插入 PDF 注释。与依赖可能过时的机制相比,这可能是更有希望的探究途径.synctex.gz
。