2010-08-14 80 views
1

我已经尝试使用LaTeX和DocBook来记录编程工具,以获得PDF输出。我发现,这些工具在某些方面非常出色 - 轻松版本化,并生成非常实用的PDF手册。但是有一个严重的缺陷。代码片段不能简单地从PDF中剪切和粘贴。如何使用剪切粘贴代码片段来创建PDF文档?

对于DocBook,问题是空白的损失 - 主要是缩进,但任何重复的空格似乎都被剥离了。因此,将代码片段粘贴到文本编辑器后,您需要清理缩进和垂直对齐。两条或三条线路不会太麻烦,但它很快就会变得烦人。

随着乳胶 - 好吧,这是一团糟。以下内容来自使用MikTeX 2.8中的LaTeX生成的PDF。

node myclas s 
f f i e l d f i e l d 0 1 : i n t ; 
f i e l d f i e l d 0 2 : ” char ” ; 
g; 

预期的例子是...

node myclass 
{ 
    field field01 : int; 
    field field02 : "char*"; 
}; 

除了事实乳胶报价戏剧,预期的形式是什么,你在Adobe Reader看 - 但不是很像你得到了什么剪切和粘贴。不要问我空间上发生了什么,或者为什么大括号变成字母,或者星号发生了什么 - 我不知道!

大多数情况下,我已经注意到这些东西玩的方式保留自己的个人笔记,并回到其他方式。有些笔记是HTML或纯文本,所以我可以对它们进行版本化。其他人则在我使用了多年的旧杂志程序中。但是我写了一个我可能很快就会发布的工具 - 而且我想要包含一个可用的PDF手册,其中需要包含示例。

那么 - 是否有创建PDF文档的方法,可以轻松地剪切和粘贴代码片段?最好能让我在版本化的文本文件中保留“源代码”。

EDIT

任何解决方案必须是便携式的。我需要在Linux和Windows XP上使用它。

编辑

看起来这是不可能的。

我试过从记事本++打印到Adobe Acrobat Pro 7打印机驱动程序。由此产生的文件看起来很好,但剪切和粘贴给出了与DocBook一样的缺少的空白问题。

我尝试在Acrobat Pro中使用touchup文本工具来添加前导空格。保存并重新加载时会保留这些内容 - 但是,如果您通常在杂技演员中选择文本,则不包括它们。您只能使用touchup文本工具剪切和粘贴这些空格,据我所知,这显然不包含在读者中。

换句话说,这看起来像一个基本的限制 - 而不是PDF格式本身,就像使用它的工具一样。这里似乎有一个普遍的假设,即空白不重要 - 对我来说显然是不正确的。

EDIT

一种解决方案可以是 “文本字段”。我可以使用Acrobat Pro轻松添加这些文件,可以设置固定宽度的字体,输入多行文本并使字段只读。在Acrobat Pro 7中,字段中的文本是不可选的 - 但在Reader 9中,可选,并且在剪切和粘贴时保留所有内容。

问题是可以直接使用某种可用于创建完整手册的标记语言生成文本字段吗?

回答

1

我建议enscript。我用它来制作档案和文件。 此外,您可以将pscript中的多个源代码与enscript合并为另一个pdf。

+0

我只是看了一下,但我应该说我需要在Windows上运行它。我知道有一个Windows端口,但这是我第一次见到一个Windows端口,它假定它将运行在类Unix系统上。即使是二进制下载也采用Unix文件系统结构,只包含原始的基于Unix的安装说明等。我真的已经足够了这些 - 它是一个挑战 - 只是安装该死的东西程序,所以这不适合我。 – Steve314 2010-08-14 07:18:58

+0

好的,那么我会建议使用一个PDF创建者,它充当打印机驱动程序。 应该很容易将纯文本文件打印到PDF中,然后将它们合并到其余文档中。 查看http://download.cnet.com/1770-20_4-0.html?query=Adobe+PDF+Printer+Driver+Plug+in&searchtype=downloads for drivers。 – polemon 2010-08-14 07:28:00

+0

看起来这可能是一个不可能完成的任务 - 我马上就会更新这个问题 – Steve314 2010-08-14 07:36:18

0

如果您的代码保存在外部文件中,一种方法是将原始文件附加为PDF附件。这可以通过Docbook,LaTeX,DITA和其他一些软件来完成。

例如,如果您使用的是this method to include code in Docbook,则可以将一些代码写入XSL自定义层,以将外部文件作为附件添加到PDF。据我所知,这是可移植的(虽然我没有亲自尝试在Evince,Okular,Xpdf等中打开带有附件的PDF文件来查看会发生什么)。

如果您正在使用FOP处理Docbook文件,您仍然应该能够在自定义层中写入某些内容来附加文件。请参阅section on PDF attachments。如果您想让人们更容易发现,您甚至可以在PDF中的代码块下方输出指向附件的链接。

类似的解决方案应该可以使用LaTeX和attachfile包。