将源代码转换为语法突出显示的图像
背景
OpenOffice Writer 缺乏链接到 ASCII 文本源文件、应用语法突出显示、将其包装在框架中以及在源文件发生更改时更新框架内容的能力。但是,OpenOffice Writer 可以链接到图像,并且当图像发生变化时会自动更新图像。
问题
图像需要高分辨率(300 dpi 或更高),并具有适合白色背景(即打印页面)的语法着色。
问题
如何从源代码文件自动创建高质量的图像,如:
- SQL;
- PostgreSQL 函数;
- 爪哇;
- bash 脚本; R和
- PL/R?
尝试
大多数尝试都是以下主题的变体:
$ enscript --color -f Courier12 -B -1 --highlight=sql -h -o - source.sql |\
convert - -trim -border 10 source.png
这种方法存在一些问题:
- 缺乏分辨率(使用
-resample
和-密度
没有提供任何改进) 。 - 语法突出显示不适合白页(可能会更改 enscript 的颜色主题)。
- 使用
Courier100
会生成多个.png
文件,需要将这些文件拼接在一起。 -border 10
意外地将背景颜色从白色更改为浅灰色。
手动解决方案
将源文件转换为 PostScript(完全避免 ImageMagick),然后将它们导入 GIMP 将产生所需的结果。不幸的是,该解决方案涉及一些手动工作,而我的 GIMP 批处理编程经验几乎为零。
Background
OpenOffice Writer lacks the ability to link to an ASCII text source file, apply syntax highlighting, wrap it in a frame, and update the frame contents whenever the source file changes. However, OpenOffice Writer can link to images, and will update the images automatically when they change.
Problem
The images need to be high-resolution (300 dpi or greater) with syntax colouring appropriate for a white background (i.e., a printed page).
Question
How can high-quality images be created automatically from source code files, such as:
- SQL;
- PostgreSQL functions;
- Java;
- bash scripts; and
- R and PL/R?
Attempts
Most attempts have been a variation on the following theme:
$ enscript --color -f Courier12 -B -1 --highlight=sql -h -o - source.sql |\
convert - -trim -border 10 source.png
There are a few problems with this approach:
- The resolution is lacking (using
-resample
and-density
offer no improvement). - The syntax highlighting is unsuitable for a white page (can probably change enscript's colour theme).
- Using
Courier100
produces several.png
files, which would need to be stitched together. - The
-border 10
unexpectedly changes the background colour from white to lightgray.
Manual Solution
Converting the source files to PostScript -- avoiding ImageMagick altogether -- and then importing them into The GIMP will produce the desired results. Unfortunately, that solution involves a bit of manual work, and my GIMP batch programming experience is next to nil.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
![扫码二维码加入Web技术交流群](/public/img/jiaqun_03.jpg)
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
另一种选择是使用 catage,CodeSnap, PolaCode 或 carbon-now-cli。
CodeSnap 和 PolaCode 是 Visual Studio Code 扩展,从命令行使用它们可能很难,但使用起来很简单。将它们安装到编辑器中时请按照说明进行操作。此解决方案适用于 Visual Studio Code 支持的所有操作系统。
如果您使用基于 Debian 的 Linux 发行版,并且安装了 Docker,则可以使用以下 shell 脚本创建 catage Docker 映像:
以下脚本创建 Carbon-now-cli Docker 映像:
同样,可以使用 这些 Docker 图像在 shell 脚本中如下所示,以从代码片段生成 PNG 图像:
Docker 方法适用于 Docker 支持的所有操作系统。您可能需要根据操作系统的功能修改上述 shell 脚本示例,但基本命令保持不变。
Another option is to make use of catage, CodeSnap, PolaCode or carbon-now-cli.
CodeSnap and PolaCode are Visual Studio Code extensions, and it may be difficult to use them from the command line, but they are simple to use. Follow the instructions when installing them into your editor. This solution works for all operating systems supported by Visual Studio Code.
If you are using a Debian-based Linux distribution, and you have Docker installed, then you can create a catage Docker image using the following shell script:
Similarly, a carbon-now-cli Docker image can be created with the following script:
Use these Docker images in a shell script as follows, to generate PNG images from your code snippets:
The Docker approach works for all operating systems supported by Docker. You may have to modify the above shell script examples according to the capabilities of your operating system, but the basic commands remain the same.
软件要求
以下软件包可用于 Windows 和 Linux 系统,并且是完整、有效的解决方案所必需的:
一般步骤
该解决方案的工作原理如下:
FONT
标记)。安装
将组件安装到以下位置:
C:\Program Files\Vim
C:\Program Files\ Vim\vim73\colors
C:\Program Files\wkhtml
C:\Program Files\ gs
C:\Program Files\ImageMagick
注意:ImageMagick 有一个名为
convert.exe
的程序,该程序不能取代Windowsconvert
命令。因此,convert.exe
的完整路径必须在批处理文件中进行硬编码(而不是将 ImageMagick 添加到PATH
)。环境变量
添加或更新以下内容 环境变量:
C:\Program Files\gs\gs9.00\lib
C:\Program Files\gs\gs9.00\bin\gswin32.exe
"C:\Program Files\Vim\vim73";"C:\ Program Files\wkhtml";"C:\Program Files\gs\gs9.00\bin"
批处理文件
以下是批处理源文本:
Software Requirements
The following software packages are available for both Windows and Linux systems, and are required for a complete, working solution:
General Steps
Here is how the solution works:
FONT
tags).Installation
Install the components into the following locations:
C:\Program Files\Vim
C:\Program Files\Vim\vim73\colors
C:\Program Files\wkhtml
C:\Program Files\gs
C:\Program Files\ImageMagick
Note: ImageMagick has a program called
convert.exe
, which cannot supersede the Windowsconvert
command. Because of this, the full path toconvert.exe
must be hard-coded in the batch file (as opposed to adding ImageMagick to thePATH
).Environment Variables
Add or update the following environment variables:
C:\Program Files\gs\gs9.00\lib
C:\Program Files\gs\gs9.00\bin\gswin32.exe
"C:\Program Files\Vim\vim73";"C:\Program Files\wkhtml";"C:\Program Files\gs\gs9.00\bin"
Batch File
Here is the batch source text: