代码之家  ›  专栏  ›  技术社区  ›  Steve314

如何使用可剪切和粘贴的代码片段创建PDF文档?[关闭]

  •  1
  • Steve314  · 技术社区  · 15 年前

    我尝试使用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中 可选,剪切和粘贴时保留所有内容。

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

    2 回复  |  直到 10 年前
        1
  •  1
  •   polemon    15 年前

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

        2
  •  0
  •   Scribblemacher Vishal Nagda    10 年前

    如果代码保存在外部文件中,一种方法是将原始文件附加为PDF附件。这可以通过DocBook、LaTex、Dita和其他一些工具来实现。

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

    如果您正在使用偶数FOP处理DocBook文件,您应该仍然能够将某些内容写入自定义层以附加文件。见 section on PDF attachments . 如果你想让人们更容易发现,你甚至可以输出一个链接到PDF代码块下面的附件。

    类似的解决方案应该可以使用带有AttachFile包的LaTex。