首页 > 其他分享 >浅尝在 Rocky 9 下自助生成 PDF 格式的 TiDB 文档

浅尝在 Rocky 9 下自助生成 PDF 格式的 TiDB 文档

时间:2024-01-08 11:04:49浏览次数:56  
标签:Rocky pandoc shawnyan 浅尝 文档 TiDB PDF rocky9

img01.png

图片选自: https://asktug.com/t/topic/1020117

TL;DR

Asktug.com 论坛里偶有小伙伴询问如何自助生成 PDF 格式的 TiDB 文档,或是 PDF 太长,经常查阅的只是其中一部分,如何只生成那一部分的 TiDB 文档。本文将介绍如何在 Rocky Linux 9 上自助生成 PDF 格式的 TiDB 文档。

没听过十年二手玫瑰,是不会轻易做这种尝试的,对于 LaTaX 新手来说,积累本文素材的过程极为痛苦。不建议各位看官实操本文的第二种方法,还是推荐使用第一种方法,基本按照官方推荐的、经过测试的方法来,便捷、有效、易用。

环境准备

  1. 操作系统:Rocky Linux 9.3
[shawnyan@rocky9 ~]$ cat /etc/redhat-release 
Rocky Linux release 9.3 (Blue Onyx)
[shawnyan@rocky9 ~]$ uname -rsm
Linux 5.14.0-362.13.1.el9_3.x86_64 x86_64
  1. 前置安装:git, podman
[shawnyan@rocky9 ~]$ git --version
git version 2.39.3
[shawnyan@rocky9 ~]$ 
[shawnyan@rocky9 ~]$ podman --version
podman version 4.6.1

注:OS 和相关软件不是本文重点,遂一笔带过。

  1. 拉取 pandoc/latex 镜像

使用 podman 拉取 pandoc 镜像:

podman pull pandoc/latex
[shawnyan@rocky9 ~]# podman pull pandoc/latex
✔ docker.io/pandoc/latex:latest
Trying to pull docker.io/pandoc/latex:latest...
Getting image source signatures
Copying blob 13d63ff5f1df done  
...
Copying config 11172c3435 done  
Writing manifest to image destination
11172c3435762783d582093f4eae6cf80548ff4443a26532e35f36dac8b2ec77

查看镜像信息:

[shawnyan@rocky9 ~]# podman images | grep pandoc
docker.io/pandoc/latex            latest      11172c343576  9 months ago   550 MB
  1. 克隆 TiDB 文档库代码

这里以 TiDB 中文文档为例,克隆文档:

(为加速下载,也避免网路问题,这里选择从 gitee 克隆代码)

git clone https://gitee.com/shawnyan/docs-cn.git --depth=1
[shawnyan@rocky9 ~]$ git clone https://gitee.com/shawnyan/docs-cn.git --depth=1
Cloning into 'docs-cn'...
remote: Enumerating objects: 2472, done.
remote: Counting objects: 100% (2472/2472), done.
remote: Compressing objects: 100% (2392/2392), done.
remote: Total 2472 (delta 122), reused 1622 (delta 80), pack-reused 0
Receiving objects: 100% (2472/2472), 160.93 MiB | 8.04 MiB/s, done.
Resolving deltas: 100% (122/122), done.
Updating files: 100% (2440/2440), done.

克隆完成后,查看版本,确认当前文档源码为最新版。

[shawnyan@rocky9 docs-cn]$ git lg
* a19b956 - (grafted, HEAD -> master, origin/master, origin/HEAD) upgrade TiDB: check DDL and backup status before checking cluster health (#15936) (2 days ago) <Aolin>

方法一:使用 pandoc/latex 镜像生成 PDF 文档

在 TiDB 中文文档代码库的 README 中有这样一段介绍,并给出了相关教程。

如果你想在本地定制输出符合特定场景需求的 PDF 格式的 TiDB 文档,例如对 TiDB 文档目录进行自由排序和删减,请参考自助生成 TiDB 文档 PDF 教程。

只是教程中介绍的是 Windows 和 macOS 环境,下面将介绍在 Linux 环境下的相关操作流程,推荐有需求的同学使用这种方法。

TiDB 文档目录在 TOC.md 文件中,编辑此文件按需进行调整、删减。

例如,在本例中只保留【关于 TiDB】部分。

<!-- markdownlint-disable MD007 -->
<!-- markdownlint-disable MD041 -->

- [文档中心](https://docs.pingcap.com/zh)
- 关于 TiDB
  - [TiDB 简介](/overview.md)
  - [TiDB 7.5 Release Notes](/releases/release-7.5.0.md)
...

将所有 Markdown 文档文件按照 TOC.md 整合到一个 doc.md 文件中。

cd docs-cn
python scripts/merge_by_toc.py

运行 andelf/doc-build 容器,在本例中,文档源码目录为 /root/docs-cn

podman run -it -v /root/docs-cn:/opt/data:rw --privileged=true andelf/doc-build:0.1.9

在容器中运行生产 PDF 的脚本。

cd /opt/data
bash scripts/generate_pdf.sh

预期输出:将在宿主机上的文档源码目录下生成一个 output.pdf 文件。

[root@rocky9 docs-cn]# ls output.pdf 
output.pdf

img02.png 到此,演示结束,只是在 PDF 文档属性中还发现一处小问题,PDF 文件文档属性中的标题和作者在生成过程中未填充,需要在 generate_pdf.sh 文件中补充两行内容。

-V title-meta="TiDB 中文手册" \
-V author-meta="PingCAP Inc." \

img03.png

补充后,效果如图:

img04.png

方法二:直接安装 pandoc,texlive 软件并生成 PDF 文档

这种方法过程极为复杂繁琐,好处是可以使用最新版本的 pandoc 和 texlive。

  1. 安装一些依赖包。
dnf install curl wget git bzr mercurial openssl-client subversion procps
dnf install autoconf automake bzip2 dpkg-dev file g++ gcc imagemagick
dnf install tcl tcl-devel tk tk-devel python3 libbz2-dev libc6-dev
  1. 安装 pandoc。
dnf install pandoc
[root@rocky9 ~]# pandoc --version
pandoc 2.14.0.3
Compiled with pandoc-types 1.22.1, texmath 0.12.3.3, skylighting 0.10.5.2,
citeproc 0.4.0.1, ipynb 0.1.0.1
User data directory: /root/.local/share/pandoc
Copyright (C) 2006-2021 John MacFarlane. Web:  https://pandoc.org
This is free software; see the source for copying conditions. There is no
warranty, not even for merchantability or fitness for a particular purpose.
[root@rocky9 ~]# 
  1. 安装 texlive。
wget https://mirror.ctan.org/systems/texlive/tlnet/install-tl-unx.tar.gz
tar zxf install-tl-unx.tar.gz
cd install-tl-20240101/
perl ./install-tl
  1. 安装中文字体,官方使用的是 文泉驛(WenQuanYi),或是其他中文字体。
$ fc-list :lang-zh | grep -i wenq
/usr/share/fonts/truetype/wqy/wqy-microhei.ttc: WenQuanYi Micro Hei,文泉驛微米黑,文泉驿微米黑:style=Regular
/usr/share/fonts/truetype/wqy/wqy-microhei.ttc: WenQuanYi Micro Hei Mono,文泉驛等寬微米黑,文泉驿等宽微米黑:style=Regular
  1. 生成 PDF 文档。

由于 pandoc 版本升级更新,原有的参数发生变化,比如 --latex-engine 不再支持,需要替换为 --pdf-engine

MAINFONT="Microsoft YaHei"
MONOFONT="Microsoft YaHei"

pandoc --pdf-engine=xelatex doc.md -o output2.pdf --toc -s \
-V title="TiDB 文档(节选)" \
-V author="ShawnYan" \
-V title-meta="TiDB 文档(节选)" \
-V author-meta="ShawnYan" \
-V CJKmainfont="${MAINFONT}" \
-V mainfont="${MAINFONT}" \
-V sansfont="${MAINFONT}" \
-V monofont="${MONOFONT}"

对于模板文件,直接用新版 pandoc 调用会报错,需要做些调整,如下图。

img05.png

小结

方法一足够简单、实用,推荐有需求的同学使用,方法二只是其他途径探索,不做推荐。

标签:Rocky,pandoc,shawnyan,浅尝,文档,TiDB,PDF,rocky9
From: https://blog.51cto.com/shawnyan/9140189

相关文章

  • 一篇文章彻底搞懂TiDB集群各种容量计算方式
    背景TiDB集群的监控面板里面有两个非常重要、且非常常用的指标,相信用了TiDB的都见过:Storagecapacity:集群的总容量Currentstoragesize:集群当前已经使用的空间大小当你准备了一堆服务器,经过各种思考设计部署了一个TiDB集群,有没有想过这两个指标和服务器磁盘之间到底是啥关......
  • 一个 39.3T 的集群从TiDB v3.1.0迁移升级到 TiDB v7.1.2 的实践
    作者:xingzhenxiang集群目前情况数据39.3Ttidb版本数据导出方式选择1、BR这个版本刚开始支持,不知道有什么未知bug,暂时没有选择2、逻辑导出,首先考虑同版本发行对应的mydumper,出现tidbserver内存耗尽,放弃3、最后选择dumplingv7.1.2,看文档说事兼容以前版本导出命......
  • TiDB是如何在国有大银行实现数据库业务“一换三”的
    作者:TiDBer_小黑羊最近,看到一个国有大银行的数据库案例,狠狠刷新了我的认知↓三个“国外顶流数据库”没搞定的系统,竟然被一家国产数据库厂商拿下了。可以说,这一次,国产数据库不仅打了翻身仗,还攀上了一个前所未有的高峰。这事儿有多“离谱”?听我给你捋捋↓一、500TB数据,让三大顶流......
  • TiDB多集群监控部署方案实战
    作者:dba-kit1.单集群部署可选配置项TiDB在部署时候可以选择部署监控系统,可选配置有:monitoring_servers:包含Prometheus和NgMonitoring(用于支持TiDBDashboard中持续性能分析和TopSQL功能),详细见:官方文档-monitoring_serversgrafana_servers:部署Grafana的相关参数,详细......
  • RockyLinux配置AutoFs自动挂载
    一、AutoFS简介Autofs是一个自动挂载文件系统的工具,它可以自动地在需要时挂载文件系统并在不需要时卸载。与mount命令不同,autofs服务程序是一种Linux系统守护进程,当检测到用户试图访问一个尚未挂载的文件系统时,将自动挂载该文件系统。换句话说,将挂载信息填入/etc/fstab文件后,系统在......
  • Rocky Linux 9 x86_64 OVF (sysin)
    RockyLinux9x86_64OVF(sysin)以社区方式驱动的企业Linux作者主页:sysin.orgRockyLinux9.0(5.14.0-70.13.1.el9_0.x86_64)以社区方式驱动的企业LinuxRockyLinux是一个开源的企业级操作系统,旨在与RedHatEnterpriseLinux®100%1:1兼容。它正处于社区的密集开发中。......
  • tidb破解root用户密码
    1、添加跳过认证tidb的配置文件(单节点即可)[root@localhostconf]#vitidb.toml[security]skip-grant-table=true2、停止服务systemctlstoptidb-40003、root启动脚本/tidb-deploy/tidb-4000/scripts/run_tidb.sh4、登陆更改密码mysql-h192.168.10.99-P4000-urootSETPA......
  • Rocky Linux 9 x86_64 OVF (sysin) - VMware 虚拟机模板
    RockyLinux9x86_64OVF(sysin)-VMware虚拟机模板以社区方式驱动的企业Linux作者主页:sysin.orgRockyLinux9.3(5.14.0-362.8.1.el9_3.x86_64)RockyLinux9.0(5.14.0-70.13.1.el9_0.x86_64)以社区方式驱动的企业LinuxRockyLinux是一个开源的企业级操作系统,旨在与Red......
  • Rocky Linux 8.9 发布 - CentOS 的权威替代
    RockyLinux8.9发布-CentOS的权威替代RockyLinux由CentOS项目的创始人GregoryKurtzer领导作者主页:sysin.org以社区方式驱动的企业LinuxRockyLinux是一个开源的企业级操作系统,旨在与RedHatEnterpriseLinux®100%1:1兼容。它正处于社区的密集开发中。以社区驱......
  • TiDB故障处理之让人迷惑的Region is Unavailable
    背景最近某集群扩容了一批物理机,其中TiKV节点有6台机器12个实例,同时调整了label设置增加了一层机柜级容灾。因为前期做了比较充分的准备工作,到了变更窗口只等着执行scale-out就行,操作过程也很顺利,很快就把所有节点都扩进去了,检查完各实例的运行状态,确保region已经开始正常调......