用Pandoc生成TXT格式的目录
我一直使用Markdown格式写作,使用Pandoc生成PDF和Word格式的文档。Pandoc能生成很好的章节和目录,但有时候,也需要生成TXT格式的目录,今天就尝试了一下。
由于我写的内容章节比较多,所以我先写了一个Makefile,主要内容如下:
PANDOC = pandoc NAME = 大道至简 VER=0 SRC=meta.md \ 1.md \ 2.md \ 3.md \ 4.md \ 5.md \ 5-2.md \ 5-x.md txt: $(PANDOC) -s --toc --variable documentclass="report" \ --number-sections \ --mathjax \ --lua-filter=templates/diagram-generator.lua \ --no-highlight \ -t plain \ -o out/$(NAME)-$(VER).txt \ $(SRC)
使用make txt
命令就可以生成TXT格式的文件和目录了,包括章节和编号,效果非常好,部分内容如下:
大道至简——给所有人看的编程书 杜金房 - 1 神奇的数 - 1.1 认识数 - 1.2 数的起源 - 1.3 阿拉伯数字与数的表示 - 1.4 很大的数 - 1.5 数的进制 - 1.5.1 不同进制的数 - 1.5.2 二进制数与逻辑运算 - 1.5.3 八、十六及三十六进制数 - 1.5.4 进制转换 - 1.5.5 二进制移位 - 1.6 整数和自然数 - 1.7 代数和方程 - 1.8 有理数 - 1.9 无理数 - 1.10 指数和对数 - 1.11 实数和虚数 - 1.12 数列 - 1.12.1 简单数列 - 1.12.2 指数增长 - 1.12.3 斐波纳契数列 - 1.12.4 级数 - 1.13 汉诺塔 - 1.14 矩阵 - 1.15 函数 - 1.16 微积分 - 1.16.1 导数 - 1.16.2 加速度 - 1.16.3 微分 - 1.16.4 积分 - 1.17 无穷大与无穷小的比较 - 1.18 高维空间 - 1.19 坐标系 - 1.20 小结 - 2 计算机是怎样工作的 - 2.1 环境准备 - 2.2 晶体管和门电路 - 2.2.1 二极管和三极管 - 2.2.2 门电路 - 2.2.3 加法器 - 2.3 计算机的组成 - 2.3.1 CPU - 2.3.2 存储器 - 2.4 操作系统 - 2.4.1 Windows - 2.4.2 UNIX - 2.4.3 Linux - 2.4.4 Mac OS 和 macOS - 2.4.5 iOS 和 Android - 2.4.6 鸿蒙 - 2.5 原码、反码和补码 - 2.5.1 原码 - 2.5.2 反码 - 2.5.3 补码 - 2.5.4 为什么要用补码? - 2.6 浮点数 - 2.7 字符编码 - 2.7.1 ASCII 码 - 2.7.2 中文编码 - 2.7.3 字节序 - 2.8 文件格式 - 2.8.1 文本文件 - 2.8.2 二进制文件 - 2.9 多媒体在计算机中的表示 - 2.9.1 音频 - 2.9.2 颜色和图像 - 2.9.3 电影、电视和视频 - 2.9.4 音视频封装、传输和未来 - 2.9.5 视频图像的像素点数据格式 - 2.9.6 扫描线与电视制式 - 2.10 小结 - 3 操作系统 - 3.1 Linux 入门 - 3.1.1 认识命令行 - 3.1.2 文件权限 - 3.1.3 用户和组 - 3.1.4 简单文件操作 - 3.1.5 输入输出重定向 - 3.1.6 文本编辑器 - 3.1.7 文本文件处理 - 3.1.8 Shell - 3.1.9 man - 3.1.10 Linux 上的图形用户界面 - 3.1.11 安装 Linux - 3.1.12 SSH 远程连接 - 3.1.13 文件系统层次结构 - 3.1.14 进程 - 3.2 Docker 入门 - 3.2.1 虚拟化技术 - 3.2.2 Docker 简介 - 3.2.3 Docker 安装 - 3.2.4 Docker 基本概念 - 3.2.5 Docker 常用命令 - 3.2.6 Docker Compose - 3.2.7 宿主机文件挂载 - 3.3 Windows - 3.4 macOS - 3.4.1 Homebrew - 3.4.2 软件包 - 3.4.3 常用软件 - 3.5 Android 和 iOS - 3.5.1 Android - 3.5.2 iOS - 3.6 计算机网络 - 3.6.1 以太网和无线通信技术 - 3.6.2 OSI 和 TCP/IP 网络模型 - 3.6.3 IP 地址 - 3.6.4 MAC 地址 - 3.6.5 单播、多播和任播 - 3.6.6 DNS - 3.6.7 路由 - 3.6.8 TCP - 3.6.9 UDP - 3.6.10 网络安全 - 3.6.11 加解密和证书 - 3.7 基本概念和理论 - 3.7.1 进程和线程 - 3.7.2 进程调度 - 3.7.3 进程间通信 - 3.7.4 中断 - 3.7.5 内存管理 - 3.7.6 文件系统 - 3.7.7 设备管理 - 3.7.8 用户界面 - 3.8 内核 - 3.8.1 特权级 - 3.8.2 微内核与单一内核 - 3.8.3 再说 GNU - 3.9 小结 - 4 开发工具 - 4.1 Windows 上的效率工具和开发环境 - 4.1.1 winget - 4.1.2 Windows Terminal - 4.1.3 WSL - 4.1.4 经典 UNIX 工具 - 4.2 Git - 4.2.1 Git 安装和设置 - 4.2.2 一个 Git 实例 - 4.2.3 Git 基本概念 - 4.2.4 Git 工作流程 - 4.2.5 Git 协作流程 - 4.2.6 Github - 4.2.7 分支 - 4.2.8 Squash - 4.2.9 误区和最佳实践 - 4.2.10 Git Server - 4.2.11 Gitea - 4.2.12 Git 图形界面 - 4.2.13 我的 Git 小工具 - 4.2.14 我的 .gitconfig - 4.2.15 Git 小结和延伸阅读 - 4.3 构建工具 - 4.3.1 Makefile - 4.3.2 Autotools - 4.3.3 CMake - 4.3.4 Ninja - 4.3.5 Meson - 4.3.6 Bazel - 4.3.7 Java 构建工具 - 4.3.8 JavaScript 构建工具 - 4.3.9 其他构建工具 - 4.4 其他编辑器和 IDE - 4.4.1 Neovim - 4.4.2 VS Code - 4.4.3 Eclipse - 4.4.4 Android Studio - 4.4.5 Xcode - 5 编程语言 - 5.1 编程语言串讲 - 5.2 汇编语言 - 5.2.1 感受十六进制数 - 5.2.2 汇编语言的 hello world - 5.2.3 汇编程序 - 5.2.4 反汇编 - 5.2.5 汇编语言做加法 - 5.2.6 寄存器 - 5.2.7 Linux 上的汇编 - 5.2.8 计算机是怎么启动的? - 5.2.9 写一个操作系统内核 - 5.2.10 从硬盘启动操作系统 - 5.2.11 将操作系统装到硬盘上 - 5.2.12 制作安装光盘 - 5.2.13 调试与排错 - 5.3 小结 - 6 C 语言 - 6.1 基本语法 - 6.1.1 注释 - 6.1.2 Hello, World! - 6.1.3 变量和赋值 - 6.1.4 变量的作用域 - 6.1.5 静态变量 - 6.1.6 运算符 - 6.1.7 自增和自减运算符 - 6.1.8 格式化输出 - 6.1.9 条件语句 - 6.1.10 循环 - 6.1.11 预编译和宏 - 6.1.12 可变长参数 - 6.1.13 结构体 - 6.1.14 联合体 - 6.1.15 枚举 - 6.1.16 数组 - 6.2 指针 - 6.3 代码风格 - 6.3.1 C 语言代码风格 - 6.3.2 代码自动格式化 - 6.3.3 代码风格和使用习惯 - 6.3.4 命名规范 - 6.3.5 错误处理 - 6.4 WAV 文件示例 - 6.5 main 函数的参数 - 6.6 Socket 通信 - 6.6.1 TCP 服务器 - 6.6.2 TCP 客户端 - 6.6.3 UDP 服务器 - 6.6.4 UDP 客户端 - 6.7 实现 HTTP 协议 - 6.7.1 HTTP 协议简介 - 6.7.2 HTTP 客户端实现 - 6.7.3 写一个简单的 Web 服务器 - 6.8 写一个函数库 - 6.8.1 编写函数库 - 6.8.2 写一个使用库的例子 - 6.8.3 动态库的加载路径 - 6.8.4 用 CMake 编译库 - 6.8.5 添加单元测试 - 6.8.6 使用单元测试框架 - 6.8.7 库的查找和引用 - 6.8.8 使用 Autotools 查找依赖库 - 6.8.9 在 CMake 中检查依赖库 - 6.8.10 创建一个 CMake 版本的查找规则 - 6.8.11 libtool - 6.9 动态内存分配 - 6.10 生成 BMP 格式的图片 - 6.11 JPEG 和 PNG - 6.11.1 将 BMP 转成 PNG 格式 - 6.11.2 使用stb\_库函数写 JPEG 和 PNG - 6.11.3 使用libpng写 PNG - 6.12 生成二维码 - 6.13 在图片上渲染文字 - 6.14 在汇编语言中调用 C 函数 - 6.15 在 C 语言中调用汇编函数 - 6.15.1 C 调用汇编示例 - 6.15.2 使用gdb调试代码 - 6.15.3 检查main函数的参数 - 6.15.4 64 位 x86 平台上的汇编 - 6.15.5 ARM64 平台上的汇编 - 6.16 写一个简单的 C 编译器 - 6.16.1 生成汇编代码 - 6.16.2 从汇编生成机器码 - 6.16.3 了解 ELF 格式和内存布局 - 6.16.4 生成 ELF 格式的可执行文件 - 6.16.5 生成最终的可执行文件 - 6.17 写一个简单的 libc - 6.17.1 write系统调用 - 6.17.2 开始写一个libc库 - 6.17.3 实现printf函数 - 6.17.4 实现更多系统调用 - 6.17.5 实现 C 运行时 - 6.17.6 实现更多库函数 - 6.17.7 打印环境变量 - 6.17.8 实现一个cat示例 - 6.17.9 实现一个简单的 Shell - 6.17.10 实现动态内存分配 - 6.17.11 实现一个简单的ls命令 - 6.17.12 输出到标准错误 - 6.17.13 实现errno支持 - 6.17.14 实现头文件 - 6.17.15 使用 TCC 编译器 - 6.17.16 交叉编译 - 6.18 用 C 写操作系统 - 6.18.1 启动 C 语言版内核 - 6.18.2 内核头文件 - 6.18.3 实现 kprintf - 6.18.4 调用kprintf打印字符 - 6.18.5 获取和设置光标位置 - 6.18.6 在光标处输出字符 - 6.18.7 在 Bochs 中调试内核代码 - 6.18.8 中断处理 - 6.18.9 设置中断描述表 - 6.18.10 初始化中断控制器 - 6.18.11 初始化键盘 - 6.18.12 获取键盘输入 - 6.18.13 实现队列 - 6.18.14 实现一个内部 Shell - 6.18.15 实现一个虚拟文件系统 - 6.18.16 实现内存文件系统 - 6.18.17 实现系统调用 - 6.18.18 从文件中读入文件系统 - 6.18.19 生成用户空间程序 - 6.18.20 运行init进程及用户空间的 Shell - 6.18.21 实现read系统调用 - 6.18.22 实现system系统调用 - 6.18.23 实现其他系统调用 - 7 数据结构和算法 - 7.1 数据类型 - 7.2 线性表 - 7.2.1 冒泡排序 - 7.2.2 链表 - 7.2.3 栈 - 7.3 这个人不懂指针 - 7.4 哈希表 - 7.5 树 - 7.6 图 - 7.7 实现一个文件系统 - 8 系统编程 - 8.1 多路复用 - 8.1.1 select - 8.1.2 epoll - 8.1.3 kqueue - 8.1.4 完成端口 - 8.2 写一个 Redis 客户端 - 8.3 写一个 Redis 服务端 - 8.4 多线程 - 8.5 多进程 - 8.6 mutex,fork,pipe - 8.7 同步和异步 - 8.8 共享内存 - 8.9 信号 - 8.10 操作系统进程调度 - 9 更多编程语言 - 9.1 TypeScript - 9.1.1 特性 - 9.1.2 Ref - 9.2 kotlin - 9.2.1 语法 - 9.2.2 REF - 9.3 Python - 9.4 Ruby - 9.5 Erlang - 9.6 PHP - 9.7 Java - 9.8 JavaScript - 9.9 Go - 9.10 C# - 9.11 Lua - 9.12 Perl - 9.13 Bash - 9.14 Basic - 9.15 Objective-C - 9.16 Swift - 9.17 Scala - 9.18 Haskell - 9.19 Clojure - 9.20 Rust - 9.21 Kotlin - 9.22 Dart - 9.23 Groovy - 9.24 F - 9.25 TypeScript - 9.26 V - 9.27 Nim - 9.28 Zig - 9.29 Julia - 9.30 R - 9.31 Elixir - 9.32 Crystal - 9.33 OCaml - 9.34 D - 9.35 Ada - 9.36 Makefile autotools cmake - 9.37 JNI - 9.38 SWIG - 10 数据库 - 11 Web 编程 - 11.1 Web 服务器代码导读 完整的内容可以直接到[墨问便签上的链接](https://note.mowen.cn/note/detail?noteUuid=cnmrf9Lt6iawzthmSyEaF)。 那些还没有生成的章节,就是还没有写😀。感觉是不慎泄漏了写作进度😂。 本文永久链接:<https://www.dujinfang.com/2024/03/03/txt-toc.html> 。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· 【全网最全教程】使用最强DeepSeekR1+联网的火山引擎,没有生成长度限制,DeepSeek本体