krjt

krjt

V2EX member #454976, joined on 2019-11-23 12:59:36 +08:00
Per krjt's settings, the topics list is hidden
Deals info, including closed deals, is not hidden
krjt's recent replies
Apr 14, 2021
Replied to a topic by Cbdy 设计 有没有介绍命令行软件交互设计的书或文档?
https://clig.dev/

Further reading 里可以找到更多
@JYL888 如果没有编程经验的话,首先安装 Python 3 [1] 以及 pip [2],之后在命令行输入

pip install -U pdf.tocgen

接下来按照 #28 或者 #30 里的指令输入就可以了。

[1]: https://www.python.org/downloads/windows/
[2]: https://pip.pypa.io/en/stable/installing/
@JYL888 ?我的 pdf.tocgen 就是面向用户的,虽然完全是命令行操作。模仿第一节的 overview 里的指令基本就可以了。安装指令见第二节。
@matrix67 看起来只能在 Windows 下运行,自己目前没有运行 Windows 的电脑,不过原理应该是差不多的,最大的区别可能是 GUI vs CLI,Unix philosophy 以及是否开源的区别。GUI 的操作会更直观一点,不过我觉得在修复 ToC 时可编辑性上是没有能比过纯文本的。
@freefcw 扫描的 PDF 是不可以的,因为这样的 PDF 内部结构非常混乱,没有能够利用的信息。

但是第二点是可以的。我刻意将这个功能拆分成了 pdftocio 这个程序,使用流程可以见 2 楼。目录文件的格式可以见这里:

https://krasjet.com/voice/pdf.tocgen/#step-2-generate-table-of-contents

它是 csv 的一个变种,唯一的区别是

1. 每 1 级目录 = 4 个空格缩进
2. 分隔用的是一个空格,不是逗号
3. 标题需要用双引号(")括起来

这个格式主要的目的是为了能够在 Vim 里编辑很容易,vi" 能选中整个标题,<<或者>>能够调整标题的层级。
@whileFalse 是的,这样会更简便
@whileFalse pdf.tocgen 的重点不是 输入 /输出 目录,能做到它的工具太多了。它的重点是为没有自带目录的 PDF 通过指定的 字体 /位置 信息自动生成一个目录,这是没有那么简单的。
@whileFalse 你可能理解错 pdf.tocgen 所做的事情了哦,你所要做的事情 pdftocio 一个工具就能完成

$ pdftocio in.pdf # 打印 in.pdf 已有的 ToC
$ pdftocio in.pdf > toc # 将 in.pdf 已有的目录输出到 toc 中
$ pdftocio out.pdf < toc # 将 toc 中的目录导入到 out.pdf 中
其实你想实现的大部分功能都可以用 Pollen [1] 或者 Scribble [2] 实现( Pollen 是基于 Scribble 的)。表格可能会稍微麻烦点,但是由于在 Pollen 里每一个指令都是函数,这个可以自己写一个 string -> txexpr 的 parser 实现。

[1]: https://docs.racket-lang.org/pollen/third-tutorial.html
[2]: https://docs.racket-lang.org/scribble/getting-started.html
这个只要写一个 pandoc filter [1] 把 CodeBlock 转换成 RawBlock "html" 就好了,具体的 AST node 可以在这里 [2] 找到,如果不会用 Haskell 也有提供 lua 和 python 的库的。我之前写的 karasu [3] 里面其实有不少例子。

[1]: https://pandoc.org/filters.html
[2]: https://hackage.haskell.org/package/pandoc-types-1.20/docs/Text-Pandoc-Definition.html
[3]: https://github.com/Krasjet/karasu/tree/master/src/Karasu/Pandoc/Filters
About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2968 Online   Highest 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 13ms · UTC 15:12 · PVG 23:12 · LAX 08:12 · JFK 11:12
♥ Do have faith in what you're doing.