我尝试使用LaTex和DocBook来记录编程工具,以获得PDF输出。我发现这些工具在某些方面非常出色——易于版本化,并生成非常有用的PDF手册。但有一个严重的缺陷。不能简单地从PDF中剪切和粘贴代码段。
对于DocBook,问题在于空格的丢失——主要是为了缩进,但是任何重复的空格似乎都会被去掉。所以,一旦将代码片段粘贴到文本编辑器中,就需要清理缩进和垂直对齐。两到三行不太麻烦,但很快就会变得烦人。
用乳胶-好吧,这真是一团糟。以下内容摘自使用Miktex 2.8中的乳胶生成的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*";
};
除了LaTex使用引号之外,预期的形式是您在AdobeReader中看到的,但与从剪切和粘贴中获得的不太一样。不要问我空格怎么了,为什么大括号变成字母,或者星号怎么了-我不知道!
大多数情况下,我注意到这些事情都是在玩弄自己的笔记,然后又回到了其他方面。有些注释是HTML或纯文本的,所以我可以对它们进行版本设置。其他人都在我用了多年的一个老杂志项目中。但我已经写了一个工具,我可能希望很快发布-我想包括一个可用的PDF手册,其中需要包括例子。
那么-有没有一种创建PDF文档的方法,可以轻松地剪切和粘贴代码片段?最好是一种允许我在版本控制的文本文件中保留“源”的方法。
编辑
任何解决方案都必须是可移植的。我需要在Linux和WindowsXP上使用它。
编辑
看起来这是不可能的。
我尝试从记事本+打印到AdobeAcrobat Pro 7打印机驱动程序。生成的文档看起来很好,但是剪切和粘贴会产生与DocBook相同的空白问题。
我尝试使用Acrobat Pro中的润色文本工具添加前导空格。保存和重新加载时会保留这些内容,但在Acrobat中通常选择文本时,不会包含这些内容。据我所知,您只能使用润色文本工具剪切和粘贴包括这些空格,这显然不包括在阅读器中。
换句话说,这看起来是一个基本的限制——与其说是PDF格式本身,不如说是与它一起工作的工具。在这里,似乎有一个普遍的假设,空白是无关紧要的——这在我看来显然是不正确的。
编辑
一种解决方案可能是“文本字段”。我可以很容易地使用Acrobat Pro添加这些内容,可以设置固定宽度的字体,输入多行文本并使字段只读。在Acrobat Pro 7中,字段中的文本是不可选择的-但在Reader 9中
是
可选,剪切和粘贴时保留所有内容。
问题是——是否可以使用某种可用于创建完整手册的标记语言直接生成文本字段?