latex 注释_[LaTeX 尝试] 利用 PDF 附件和终端输出,从 Overleaf 里获得更多信息

本文已加入专栏文章目录,归入「宏包介绍」文章系列。

overleaf.com 是个提供在线版 LaTeX 的网站。在线版便利了使用,但因为 latex 运行在网站服务器上,排查分析某些问题时会不够方便。

本文以 minted 宏包项目的一个 issue 为例,介绍如何从 overleaf 里获得更多信息。本文的目的不是介绍该 issue 是如何解决的,而是介绍如何

  • 借助 embedfile 宏包,把任意文件以附件形式插入 PDF;
  • 借助 bashful 宏包,把终端的任意输出插入 PDF 页面。

示例描述

用户报告,用minted 排版汇编语言 GAS 时,遇到高亮错误。 具体为,若上一行包含注释,则下一行的操作符高亮颜色错误。(笔者不懂汇编,描述很可能有误。)

示例文件(节选自 issue)

documentclass{article}
usepackage{minted}

begin{document}
begin{minted}{gas}
  dec:
  cmp edi, 0 # comment
  je quit
  print:
  dec edi
  mov edx, 13 ; comment
  mov ecx, msg
end{minted}
end{document}

输出效果(已圈出两处高亮错误)

c1b14f2665eff2aab2ef2a4c71596e91.png

把辅助文件嵌入 PDF

minted 的工作方式,大致是

  • 把源码存入辅助文件 jobname.pyg
  • 调用 python 的 pygments 库,对 jobname.pyg 进行语法分析,分析结果输出为新的辅助文件,默认是 ./_minted-<jobname>/<long HEX number>.pygtex,文件内容是一个完整的 Verbatim 环境
  • 在 latex 里读入 .pygtex 文件,同时删除 .pyg 文件

遇到 PDF 里发生 minted 高亮错误,第一步就是确认读入的 .pygtex 文件是否也包含相同的错误。

首先,找到 .pygtex 文件的文件名

在 overleaf 的界面里点开完整 log,搜索 "pygtex",可知该文件的完整路径是 /compile/_minted-output/<long HEX number>.pygtex

然后,把这个文件以附件的形式嵌入生成的 PDF 文件

这里我们使用 embedfile 宏包,具体用法为

usepackage{embedfile}
embedfile[filespec=pygments-output.pygtex]{/compile/_minted-output/<long HEX number>.pygtex}

其中,选项 filespec 用于给嵌入的文件重命名。

这样,就能通过从 overleaf 下载 PDF,来查看 .pygtex 文件的内容。

在 PDF 里显示终端输出

在 issue 的例子中,我们确认了 .pygtex 文件中包含高亮错误,这说明问题出在 pygments 库。 结合本地无法复现该问题,我们猜测问题和 pygments 的版本差异有关。

这样,问题就转化为了,如何探知 overleaf 自带的 pygments 的版本。

首先,了解在本机上如何获取 pygments 的版本。

一种方式是在终端执行 pygmentize -Vpygmentize 是 pygments 库提供的可执行文件的名字), 这会得到类似下方的版本信息

Pygments version 2.4.2, (c) 2006-2019 by Georg Brandl.

然后,了解如何在 overleaf 里执行终端命令,并使得执行结果可以被获取。

执行终端命令可使用 write18(见本专栏文章《LaTeX:与 write18 有关的小事》)。这里我们使用 bashful 宏包, 它便利了「执行命令、获取结果、在 latex 里输出结果」这个过程,而且适用于 overleaf 后台使用的 linux 操作系统。

bashful 的用法是这样的

% usepackage{bashful}

bash[stdout]
pygmentize -V
END

编译后就能在 PDF 里看到执行 pygmentize -V 获得的信息。在 issue 的例子中,我们就此知道了 overleaf 使用 pygments v2.2.0。

补充

  1. embedfile 目前仅支持 pdftex 引擎
  2. 在需要自动把宏包源文件存入 PDF 时,可以考虑使用进一步封装的 embedall 宏包
  3. bashful 也适用于 macOS,稍作修改后即能用于 windows
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: LaTeX是一种适合科技文献和学术论文编辑的免费开源文档准备系统。Overleaf是在线编辑LaTeX文档的平台,使得用户可以快速免费地创建和分享高质量的科技文档,无需下载和安装LaTeX软件。Overleaf的优势包括充足的空间和免费提供的很多LaTeX样例和模板等等。此外,Overleaf还支持与他人合作编辑和版本控制,使用户更方便快捷的完成学术文档的编辑和分享,省去了繁琐的电子邮件发送和追踪版本的步骤。可以共享输出PDF文档并获得他人的反馈。总之,Overleaf提供了方便、高效、免费的在线LaTeX文档编辑和分享平台,给学术界的文献编辑和写作带来了新的前景。 ### 回答2: Latex是一种排版系统,它具有高度可定制性和专业性。与常见的Microsoft Word等图形化的文字编辑器不同,LaTeX使用纯文本代码来指示文本的布局、样式和格式,使得排版的效果更为精确和一致性。 Overleaf,是一个在线的LaTeX编辑器和合作工具,提供了一个方便用户的平台。它允许用户无需安装LaTeX软件和插件就可以轻松编写和编辑LaTeX文档,通过多用户协作功能,用户可以与团队成员共同编辑文档。Overleaf还提供了丰富的LaTeX模板和教程,使得新手和资深用户都能从中找到帮助。 在利用Overleaf编写LaTeX文档时,用户可以直观地预览文档效果,方便地修改和调整各个元素,如格式、结构、图表等,而无需关注具体的代码细节。Overleaf还支持多种数据格式文件的导入和导出,方便用户与其他文档进行交互。同时,Overleaf还提供了付费版本,使得用户可以享受更多的高级功能,如更大的存储空间、更好的合作体验。 总之,LaTeXOverleaf都是高效、专业和灵活的工具,常被科技行业和学术界用于科技文献的排版和编辑。对于那些有追求、有技术要求的用户来说,它们都是不可缺少的工具。 ### 回答3: LaTeX是一种专业的排版软件,可用于生成高质量的文档,例如论文,报告,书籍和演示文稿。而Overleaf是一款基于云端的LaTeX编辑器。 各种文档类型和模板可以在Overleaf上直接下载,以便用户可以轻松开始他们的写作。该平台还带有实时模式,它可以提供两种视图,即编辑模式和预览模式。编辑模式允许用户进行LaTeX编辑器的实时编辑,因此可以立即看到其更改的结果。预览模式是将已经编写好的文档预览出来给用户,以检查是否符合用户的期望。 对于初学者,Overleaf可以通过许多在线模板和代码样式提供模板来帮助他们简化他们的工作,以便更容易学习LaTeX 并以更少的时间创建文档。同时,该平台也支持多种语言,提供不同国家的用户使用的语言环境,例如中文,日文,韩文,英文等。 另外,Overleaf还带有多人协作功能,从而可以更方便地与合作者一同编辑文档,无需打开文档的附件或通过电子邮件发送多个版本。这样,团队成员可以同时添加和编辑文档,且可以实时查看对方的更改内容。 总之,Overleaf是一个功能齐全的LaTeX编辑器,易于使用,提供丰富的模板,并支持多人协作。EntraPass 它为专业LaTeX用户和初学者提供了一个简单,快速的方式来制作高质量的文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值