把MultiMarkDown格式的文本文件转化成epub格式的电子书
175
把MultiMarkDown格式的文本文件,转化成epub格式的电子书。
#! /usr/bin/bash
clear &&
docker run --rm \
-v ./mmd:/mmd \
reechand/multi_markdown_6_7_0 \
multimarkdown --full --to=epub \
--output=/mmd/mmd.epub
/mmd/mmd.md
具体各个命令行参数是干啥的,参看MultiMarkDown官方的说明
具体语法参看这里
支持交叉引用,参考文献,脚注等。这都是标准的markdown和latex相比不足的地方,这个工具应该是给补足了。
latex生成的PDF格式的电子书,要把源码复制出来就很难和原来一致了(也可能是我技术原因,或者我孤陋寡闻)。 源码行前面的空格缩进没有了,像python这样的程序就乱套了。 但是使用这个工具生成的电子书,如果使用calibre自带的电子书查看器进行阅读的话,源代码是可以复制出来的。
calibre自带的阅读器,功能比较多,但是都藏在右键菜单里面,尤其是目录。
大小只有3.21M。为什么这么小呢?因为我们在编译的时候,采用的是静态链接方式,所以就剥离了对所有动态链接库的依赖。
放在当前目录下的usr目录下面
为什么要编写这个文件呢?因为我们打算使用这个文件来生成我们需要的结果
文件名:Dockerfile.gen
FROM reechand/ubuntu:22.04
# 1.安装git,cmake和g++这些都是编译工具,必不可少
RUN apt install -y git cmake g++
# 2.到github上下载官方的源码(我们在网关也就是host上搭建了梯子)
WORKDIR /work
# 3.提取网关充当梯子
RUN apt install -y iproute2
RUN gateway=$(ip route show | grep default | awk '{print $3}') \
https_proxy=http://${gateway}:7890 http_proxy=http://${gateway}:7890 all_proxy=socks5://${gateway}:7890 \
git clone https://github.com/fletcher/MultiMarkdown-6.git .
# 4.使用静态编译参数
ENV CXXFLAGS=-static CFLAGS=-static
# 5.进行编译
RUN make
WORKDIR /work/build
RUN make
# 6.进行安装(这会形成单独的一个Docker Image文件层,我们提取的就是它)
RUN make install
文件名是:buildImage.bash.gen
#! /usr/bin/bash
clear &&
docker build -t hf/mmd --file Dockerfile.gen . &&
clear &&
bash -c "echo -e y | docker image prune" &&
docker image ls
以上bash脚本执行成功以后,我们就得到了临时的docker image,叫做hf/mmd,通过命令docker image ls可以看到。
hf/mmd变成tar文件docker save -o tmp.tar hf/mmd
chmod +777 tmp.tar
然后我们就得到了临时的tar文件,临时的docker imagehf/mmd就没有啥用了。
使用解压工具把tmp.tar解开,我们看到文件:repositories
其中的内容为:
{"hf/mmd":{"latest":"2cb38a4871f8ba564d723ccb49e0bb045b520060550184ae3cff07aceb438dfa"}}
我们从名为2cb38a4871f8ba564d723ccb49e0bb045b520060550184ae3cff07aceb438dfa的目录下提取出文件layer.tar。
提取出来的layer.tar这个文件个头极小。
我们把它解压出来,只保留usr目录,work目录删除。
当前目录下的usr目录就是我们需要的全部了,此前的其它文件都可以不要了。
reechand/multi_markdown_6_7_0FROM reechand/null
COPY usr/ /usr/
我们使用的脚本文件名是buildImage.bash
#! /usr/bin/bash
clear &&
docker build -t reechand/multi_markdown_6_7_0 . &&
clear &&
bash -c "echo -e y | docker image prune" &&
docker image ls
export https_proxy=http://127.0.0.1:7890;export http_proxy=http://127.0.0.1:7890;export all_proxy=socks5://127.0.0.1:7890 &&
docker push reechand/multi_markdown_6_7_0
发布的文件中,有很多是bash脚本。因为我们并没有打包bash解释器,所以根本没什么用。
但是因为本来个头就不大,删除也节省不了多大的空间,我们就留着了。
Content type
Image
Digest
sha256:d457b50f3…
Size
2 MB
Last updated
almost 3 years ago
docker pull reechand/multi_markdown_6_7_0