格式化 Emacs 函数中的标头以将缓冲区打印到 PDF(带换行)

2023-12-05

Rupert Swarbrick 提出了以下三个函数来将 Emacs 缓冲区打印为 pdf,其中行被换行(使用时通常不会出现这种情况)ps-print*功能)。

问题是这个函数要实现换行,必须复制当前缓冲区。这有效地破坏了ps-print-buffer-with-faces在生成的 PDF 文件中的每个页面顶部显示正确的页眉。

作为其解决方案的一部分,Rupert Swarbrick 编写了一个保留此信息的函数。然而,生成的标头始终是标题行左

谁能指出其中的错误?

(defun harden-newlines ()
  (interactive)
  "Make all the newlines in the buffer hard."
  (save-excursion
    (goto-char (point-min))
    (while (search-forward "\n" nil t)
      (backward-char)
      (put-text-property (point) (1+ (point)) 'hard t)
      (forward-char))))

(defun spool-buffer-given-name (name)
  (load "ps-print")
  (let ((tmp ps-left-header))
    (unwind-protect
        (progn
          (setq ps-left-header
                (list (lambda () name) 'ps-header-dirpart))
          (ps-spool-buffer-with-faces))
      (setf ps-left-header tmp))))

(defun print-to-pdf ()
  "Print the current file to /tmp/print.pdf"
  (interactive)
  (let ((wbuf (generate-new-buffer "*Wrapped*"))
        (sbuf (current-buffer)))
    (jit-lock-fontify-now)
    (save-current-buffer
      (set-buffer wbuf)
      (insert-buffer sbuf)
      (setq fill-column 95)
      (longlines-mode t)
      (harden-newlines)
      (message (buffer-name sbuf))
      (spool-buffer-given-name (buffer-name sbuf))
      (kill-buffer wbuf)
      (switch-to-buffer "*PostScript*")
      (write-file "/tmp/print.ps")
      (kill-buffer (current-buffer)))
    (call-process "ps2pdf14" nil nil nil
                  "/tmp/print.ps" "/tmp/print.pdf")
    (delete-file "/tmp/print.ps")
    (message "PDF saved to /tmp/print.pdf")))

尝试这个:

(defun spool-buffer-given-name (name)
  (let ((ps-left-header (list (format "(%s)" name))))
    (ps-spool-buffer-with-faces)))

请参阅变量 ps-left-header 的文档,这就是我了解上述内容的原因。

这是一个很巧妙的能力;我肯定会用它代替 ps-print。让它表现得更像 C-u M-x ps-print-buffer-with-faces 会很好;两个缺失的功能是标题中的目录名称,以及提示用户输入文件名。两者都不太困难。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

格式化 Emacs 函数中的标头以将缓冲区打印到 PDF(带换行) 的相关文章

  • 我可以在 Emacs 的 shell 模式下使用 PowerShell 吗?

    我可以在 emacs 的 shell 模式下使用 powershell 作为 shell 吗 How 请参阅 Jeffrey Snover 的博客文章在 Emacs 内运行的 PowerShell http blogs msdn com p
  • 使用 slime 时如何跳转到 emacs 中的函数定义?

    我已经使用安装了史莱姆https github com thephoeron slime pack https github com thephoeron slime pack并想进一步探索 common lisp 如何访问 emacs 中
  • 如何使用 Emacs Lisp 检查文件是否存在?

    我希望 emacs 将打开时生成的文件标记为只读 我所缺少的难题部分是如何检查文件是否 存在 我目前有以下内容 get file extension defun get ext file name car cdr split string
  • 无法在 Emacs 中打开 plantuml 模式

    我使用的是 Emacs 24 3 1 我安装了MELPA http melpa milkbox net 的版本plantuml mode https github com zwz plantuml mode via M x package
  • 在 emacs 的文件中不断出现的这些 ^M 是什么?

    我认为这可能与 TextMate 有关 但我们在一个小团队中工作 并且在 git 中几乎相同的文件的全文件冲突方面遇到了一些问题 在一个分支中 文件的每一行都附加了 M 这是什么神秘的事 M角色应该做什么 它从哪里来 我们的开发人员在 Wi
  • 如何在组织模式下关闭公司模式?

    我正在使用 spacemacs 并尝试在组织模式下关闭公司模式 同时将其保留在其他主要模式中 我尝试过以下方法 global company mode not org mode 但它不起作用 禁用自org mode hook 此方法几乎适用
  • CSharpRepl emacs 集成?

    我碰巧知道莫诺CSharpRepl http www mono project com CsharpRepl 是否有 emacs csharp 模式使用它在一个窗口中运行 REPL 并像 python 模式一样在另一个窗口中编译 运行 C
  • 使用 Python 在 Azure 存储 blob 中创建 PDF 文件的最佳方法是什么?

    我是 Python 新手 我提出了使用 Python 脚本创建包含 SQL Server 中可用数据的 PDF 文件的要求 据我研究 有许多库可用于此目的 但大多数方法是生成 HTML 字符串 然后将其转换为本地目录中的 PDF 文件 但他
  • 设置自动完成以处理语义

    我在 Emacs 中的自动完成包方面遇到问题 目前我已经启动并运行了 cedet 并具有适当的自动完成功能 但自动完成包有一些奇怪的行为 它不会使用语义 参议员 的数据库 直到我显式访问包含文件并创建 C u M x bovinate 然后
  • Lisp:CHAR 既未声明也未绑定

    几天前我决定学习 通用 Lisp 我意识到这是一个相当新手的问题 对于至少有一点经验的人来说可能非常微不足道 所以基本上发生的事情是我加载 Emacs Slime 通过 Lisp in a Box 并编写我的程序 包括在下面 defun l
  • 如何从 Emacs 中检出 Perforce 下的文件?

    我在工作中使用 Perforce 进行源代码控制 并且希望从 Emacs 中 打开以进行编辑 源代码控制下的文件 那怎么办呢 我需要在 Emacs 中设置什么 有插件吗 我还想执行其他 p4 操作 例如提交我的更改等 Perforce Em
  • 如何将报告导出为 PDF/A-1a、PDF/A-1b?

    在 jasper report 中生成 PDF A 包含许多陷阱 并且某些版本的 jasper report 不支持 这就是为什么我决定通过这个Question Answer 帖子 指示将带有图表的简单报告导出为 PDF A 所需的步骤和库
  • Emacs 中 hunspell 的工作设置

    有没有人有工作设置hunspell and Emacs 简单设定ispell program name to hunspell不起作用 输出 例如 使用 Flyspell 时 如下所示 gt UTF 8 encoding error Mis
  • 有没有办法在 Emacs 中使用 Djinn 自动生成 Haskell 代码?

    标题几乎说明了一切 我正在寻找这样的东西 f Int gt Bool gt Int f body Djinn 可以使用定理证明来通过证明该类型存在来生成此类函数的代码 我想知道 是否有现有的方法可以从 Emacs 中获取此功能 因此 我不需
  • 向上移动箭头不突出显示文本 emacs iterm2

    我最近有人帮忙修复M left等等 终端元箭头键绑定中的 emacs https stackoverflow com questions 10867199 emacs in terminal meta arrow keybindings 但
  • Emacs 如何确定要撤消的工作单元

    When you enter the command C Emacs undoes some part of your recent changes to a buffer When you enter C again it undoes
  • 使用 PHP/linux 将文件合并为单个 PDF

    我正在研究如何将多个 PDF 合并为一个 PDF 我正在寻找一个图书馆可靠且坚固尽可能 最好有一个库可以保留书签 鬼脚本 http pages cs wisc edu ghost 可以在保存书签的位置进行连接 但我遇到了麻烦 在一种情况下它
  • 使用 iText 在内存上生成在磁盘上生成的 PDF

    我正在从 Java 应用程序生成 PDF 并且效果很好 问题是 PDF 在磁盘上生成为 Document documento new Document PageSize A4 25 25 25 25 PdfWriter writer Pdf
  • 删除emacs中多余的空行

    M x flush lines 删除缓冲区中的所有空白行 但是我只想删除多余的空白行 也就是说 如果有n个连续的空白行我想删除n 1并保留一个 我知道删除空白行可以完成该点下的空白行的工作 但是我想要一个适用于整个缓冲区的简单解决方案 有什
  • 最小的有效 PDF 是多少?

    出于简单的好奇心 看到了最小的 GIF http probablyprogramming com 2009 03 15 the tiniest gif ever 最小的有效 PDF 文件是多少 这是一个有趣的问题 按照书本 你可以从以下开始

随机推荐

  • Java 与多个对象/锁的同步

    我想知道是否有一个包或模型可以帮助我解决这种情况 假设我有 3 个线程和一堆对象 A B C D E F T1需要锁A B T2需要锁B C D T3需要锁E F 在这种情况下 如果 T1 和 T3 同时运行就可以了 此外 T2 和 T3
  • 通过使用 shell 脚本替换文件名中的特定模式来重命名多个文件[重复]

    这个问题在这里已经有答案了 编写一个简单的脚本来自动重命名许多文件 例如 我们希望将文件 001 jpg 重命名为用户定义的字符串 001 jpg 例如 MyVacation20110725 001 jpg 该脚本的用途是让数码相机照片具有
  • 不要等待页面加载

    我的问题是 我必须从中获取数据的站点加载花费了太多时间 这增加了测试用例的执行时间 我不想等待整个网站加载 我能做些什么 我使用了 30 秒的超时 但即使超过时间也不会引发异常 可能所有的javascript都是在网页的onload事件中调
  • 如何从 JFrame 的中心元素显示不同的页面(已设置为 BorderLayout)

    import java awt BorderLayout import java awt Component import javax swing JFrame import javax swing border Border public
  • 使用 Wix 升级

    我尝试了页面上列出的几乎所有解决方案如何实现WiX安装程序升级 但没有升级成功 升级的时候总是提示这个信息 已安装此产品的另一个版本 无法继续安装此版本 要配置或删除此产品的现有版本 请使用控制面板上的添加 删除程序 当我跟踪安装程序日志时
  • 用于匹配 JavaScript 括号和方括号的正则表达式

    我有这个与括号内的文本匹配的正则表达式 g 我希望能够匹配圆括号和方括号 这样它就能检测到字符串中的圆括号和方括号 这样我就可以给它着色 这应该是字符串 The quick brown fox 我想上色 quick and fox 所以我需
  • 为什么我无法编译 C# 中类接口中声明的自定义事件

    假设我有这个 public interface ISlider event CustomEventDelegate CustomEvent 在我实现 ISlider 的课程中 我尝试了这个 public CustomEventDelegat
  • Angular 控制器未使用 OcLazyLoad 和 ngRoute 加载

    我有一个应用程序 最初加载了大量脚本 并且随着开发的进行 该列表不断增长 我想在需要时延迟加载包含控制器的脚本 我使用 OcLazyLoad 和 ngRoute 作为路由选项 我确实尝试了 ui route 它实际上具有相同的最终结果 但导
  • 如何在XML中使用外部实体?

    我试图了解如何使用外部实体 但我遗漏了一些东西 我有第一个文件 测试实体 xml
  • Node.js readFileSync ZIP 文件

    我正在尝试读取 ZIP 文件并将其输出到浏览器 获取页面上显示的代码并将其另存为 ZIP 文件 fs readFileSync dir file zip utf 8 当我这样做时 我得到的输出以PK coG filename txt并持续一
  • ASP.NET MVC:使用 JsonResult 控制属性名称的序列化

    有没有办法控制 JSON 输出JsonResult具有属性 类似于您可以使用的方式XmlElementAttribute及其兄弟来控制 XML 序列化的输出 例如 给定以下类 public class Foo SomeJsonSeriali
  • MySQL:带有 ORDER BY COUNT 的 GROUP_CONCAT?

    这可能吗 假设我有一个地址列表 其中有很多重复的条目 我需要过滤掉所有重复项 因为有些地址的名称略有不同 但邮政编码和电话号码相同 首先 我对邮政编码和电话进行 GROUP BY SELECT name address postalcode
  • 如何使用 AWS Cloudformer 为现有 API 网关创建云形成模板?

    我已经使用 aws 控制台创建了一个 api 网关 我想使用以下方法为我的 api 网关生成 CloudFormation 模板云形成者 请帮忙 尽管 AWS 尚未发布官方声明 但 CloudFormer 似乎已终止生命周期 AWS 没有正
  • 使用正则表达式匹配编辑(重新编码、折叠、排序)因子级别

    我发现在 R 中操作因子变量过于复杂 清洁因素时我经常想做的事情包括 排序级别 不仅设置参考类别 而且将所有级别按逻辑 非字母顺序 排列为汇总表 x lt factor x levels new order 重新编码 重命名因子级别 简化名
  • iOS 中 NSOperation 和 NSOperationQueue 的后台任务

    我想上传一些文件 即使应用程序进入后台 这些文件也应该继续 目前 我正在从数据库检索文件 然后通过 NSOperation 将其添加到队列中 然后启动上传过程 即使应用程序进入后台或前台 也应上传所有文件 下面是单个任务的代码 任何人都可以
  • 如何找到 log4j 默认初始化中使用的 URL?

    Log4j默认初始化通过一个过程来查找并使用 URL 进行配置 之后 您如何才能找出最终使用的 URL 而无需自己编写相同的过程 如果您必须自己编写代码 您可能不会得到与 log4j 完全相同的结果 而且它可能会在未来的版本中发生变化 如果
  • 如何使用 Rails 发送电子邮件

    这可能非常直接和简单 但我是 ruby on Rails 的新手和菜鸟 我有一个简单的电子邮件 php 脚本 我在旧网站上使用过 但现在由于我已经转换为 Rails 我不确定如何创建与之等效的脚本 我尝试使用rails generate m
  • 为什么 echo 与 printf 结合显示错误的输出? [复制]

    这个问题在这里已经有答案了 有谁知道为什么当我执行此操作时 usr bin php 我明白了 1005 1005 1005 1005 1005 1005 你在混合echo and printf printf返回格式化字符串的长度 所以你的e
  • django-nonrel 和管理页面

    我正在尝试在 AppEngine 上为我的网站设置 Django 管理套件 但它不起作用 我正在使用 django nonrel 设置与 我网站的其余部分似乎工作正常 但我需要让管理员工作 以便我可以开始使用数据存储区 这是我得到的错误 D
  • 格式化 Emacs 函数中的标头以将缓冲区打印到 PDF(带换行)

    Rupert Swarbrick 提出了以下三个函数来将 Emacs 缓冲区打印为 pdf 其中行被换行 使用时通常不会出现这种情况 ps print 功能 问题是这个函数要实现换行 必须复制当前缓冲区 这有效地破坏了ps print bu