Sign inSign up

reechand/multi_markdown_6_7_0

By reechand

•Updated almost 3 years ago

把MultiMarkDown格式的文本文件转化成epub格式的电子书

Image
0

175

reechand/multi_markdown_6_7_0 repository overview

⁠功能

把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官方的说明⁠

⁠特点和优势

⁠语法和功能

具体语法参看这里⁠

⁠MultiMarkDown弥补了标准的markdown相比于latex的不足之处

支持交叉引用,参考文献,脚注等。这都是标准的markdown和latex相比不足的地方,这个工具应该是给补足了。

⁠生成的电子书在源码的处理方面有超越latex生成的pdf文件

latex生成的PDF格式的电子书,要把源码复制出来就很难和原来一致了(也可能是我技术原因,或者我孤陋寡闻)。 源码行前面的空格缩进没有了,像python这样的程序就乱套了。 但是使用这个工具生成的电子书,如果使用calibre自带的电子书查看器进行阅读的话,源代码是可以复制出来的。

calibre自带的阅读器,功能比较多,但是都藏在右键菜单里面,尤其是目录。

⁠这个DockImage的个头特别小

大小只有3.21M。为什么这么小呢?因为我们在编译的时候,采用的是静态链接方式,所以就剥离了对所有动态链接库的依赖。

⁠DockImage是怎么生成出来的

⁠第一阶段:生成安装后的可执行文件

放在当前目录下的usr目录下面

⁠第一步:编写Dockerfile文件

为什么要编写这个文件呢?因为我们打算使用这个文件来生成我们需要的结果

文件名: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
⁠第二步:使用bash脚本把上面的文本文件转化成docker iamge

文件名是: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就没有啥用了。

⁠第四步:提取编译好的MultiMarkDown

使用解压工具把tmp.tar解开,我们看到文件:repositories 其中的内容为:

{"hf/mmd":{"latest":"2cb38a4871f8ba564d723ccb49e0bb045b520060550184ae3cff07aceb438dfa"}}

我们从名为2cb38a4871f8ba564d723ccb49e0bb045b520060550184ae3cff07aceb438dfa的目录下提取出文件layer.tar。

提取出来的layer.tar这个文件个头极小。 我们把它解压出来,只保留usr目录,work目录删除。

当前目录下的usr目录就是我们需要的全部了,此前的其它文件都可以不要了。

⁠第二阶段:把usr目录下的所有内容打包成为精简绿色的docker mage reechand/multi_markdown_6_7_0

⁠Dockerfile文件
FROM reechand/null
COPY usr/ /usr/
⁠使用以上Dockerfile文件生成DockerImage

我们使用的脚本文件名是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解释器,所以根本没什么用。

但是因为本来个头就不大,删除也节省不了多大的空间,我们就留着了。

Tag summary

Content type

Image

Digest

sha256:d457b50f3…

Size

2 MB

Last updated

almost 3 years ago

docker pull reechand/multi_markdown_6_7_0