Pandoc是一个用haskell编写的开源文本转换工具(通用标记转换器),小巧迅速且支持格式广泛,堪称文本转换应用的瑞士军刀。支持很多种输入输出。最大缺点:Pandoc是命令行工具,没有图形用户界面。
Pandoc是一个命令行工具,没有图形用户界面。因此,使用前需要打开一个终端窗口。
若使用cmd
,在使用pandoc前键入chcp 65001
,将编码设置为UTF-8。因为Markdown编辑器的编码通常设置为UTF-8,若cmd的编码不一致,转换时,将会产生乱码
键入chcp 65001
后
在官方网站(https://pandoc.org/)选择平台下载最新版本即可。
windows.msi版本是传统的安装方式,windows.zip版本解压后即可使用
解压后即可使用,得到五个文件:.rtf与.txt文件应该都是版权声明文件,一个.html的用户指南,pandoc.exe、pandoc-citeproc.exe都是命令行工具。pandoc-citeproc.exe不清楚其作用,主要使用pandoc.exe来进行文件转换。
安装后,检查是否已将pandoc.exe的路径配置到环境变量中去。
在命令行键入:pandoc --version
,验证是否安装了pandoc:
安装后或会发现Typora用不了:
重新安装 Typora 即可。
如果已经安装了Anaconda,可直接使用Pandoc,因为该程序已经被集成到Anaconda中。
LaTeX是一种基于TeX的排版系统,主要目的是为了方便排版,非常适用于生成高印刷质量的科技和数学类文档,对于生成复杂表格和数学公式,这一点表现得尤为突出。
下载安装Tex Live 2018,具体过程参阅:Win10 安装 LaTex。安装路径貌似不能有中文。
成功安装Tex Live 2018后,就能使用tex、latex和xelatex的相关命令。
XeLaTeX支持中文并不代表可以像写英文一样直接在tex文件中写中文,还需要载入字体。载入字体要用到fontspec宏包,但是使用宏包的命令非常的冗长,不是很方便,所以将常用的中文字体作成一个简单的命令。为了中文显示的美观和避免一些可能的问题,还要再加一些命令。有人把这些命令整合起来,写成一个宏包,一般叫zhfontcfg.sty。
字体来源
自己安装字体:或从网上下载,或在win下copy。
XeLaTeX原生支持系统字体,可直接使用系统已安装的字体,无需再额外编译字体
在命令行下,
查看本地字体的命令:fc-list
查看本地中文字体的命令:fc-list :lang=zh
。备注:冒号前面有空格
编辑宏包
使用Notepad ++ 编辑整合添加字体命令,形成一个宏包,例如命名为zhfontcfg.sty
% xetex/xelatex 字体设定宏包
\ProvidesPackage{zhfontcfg}
\usepackage[cm-default]{fontspec} %[cm-default]选项主要用来解决使用数学环境时数学符号不能正常显示的问题
\usepackage{xunicode,xltxtra}
\defaultfontfeatures{Mapping=tex-text} %如果没有它,会有一些 tex 特殊字符无法正常使用,比如连字符。
% 中文断行
\XeTeXlinebreaklocale "zh"
\XeTeXlinebreakskip = 0pt plus 1pt minus 0.1pt
%将系统字体名映射为逻辑字体名称,主要是为了维护的方便
\newcommand\fontnamehei{Microsoft YaHei}
\newcommand\fontnamesong{SimSun}
\newcommand\fontnamekai{AR PL KaitiM GB}
\newcommand\fontnamemono{DejaVu Sans Mono}
\newcommand\fontnameroman{Times New Roman}
%%设置常用中文字号,方便调用
\newcommand{\erhao}{\fontsize{22pt}{\baselineskip}\selectfont}
\newcommand{\xiaoerhao}{\fontsize{18pt}{\baselineskip}\selectfont}
\newcommand{\sanhao}{\fontsize{16pt}{\baselineskip}\selectfont}
\newcommand{\xiaosanhao}{\fontsize{15pt}{\baselineskip}\selectfont}
\newcommand{\sihao}{\fontsize{14pt}{\baselineskip}\selectfont}
\newcommand{\xiaosihao}{\fontsize{12pt}{\baselineskip}\selectfont}
\newcommand{\wuhao}{\fontsize{10.5pt}{\baselineskip}\selectfont}
\newcommand{\xiaowuhao}{\fontsize{9pt}{\baselineskip}\selectfont}
\newcommand{\liuhao}{\fontsize{7.5pt}{\baselineskip}\selectfont}
%设置文档正文字体为宋体
\setmainfont[BoldFont=\fontnamehei]{\fontnamesong}
\setsansfont[BoldFont=\fontnamehei]{\fontnamekai}
\setmonofont{\fontnamemono}
保存宏包(zhfontcfg.sty)
宏包要放在TEXMFLOCAL/tex/latex或者TEXMFHOME/tex/latex文件夹下
这两个路径的位置可以在texmf.cnf中找到,或使用命令tlmgr conf
查看:
宏包发生更改后,保持同步更新
使用命令mktexlsr
更新。
宏包使用的简单示例:
\documentclass{article}
\usepackage{zhfontcfg}
\usepackage[colorlinks,linkcolor=black]{hyperref}
%opening
\title{latex多字体简易示例}
\begin{document}
\maketitle
\section{楷体}
\kai{楷体}
\section{黑体}
\hei{黑体}
\end{document}
使用用xelatex编译文档出现以下问题,尚未解决:
语法:pandoc [OPTIONS] [FILES]
-o
选项输出到指定的文件中-s
或--standalone
选项,比如生成HTML文件常用选项:
选项 | 含义 |
---|---|
-f FORMAT, -r FORMAT, –from=FORMAT, –read=FORMAT | 指定输入文件的格式,若不指定,pandoc可以从明显的文件后缀名中推测,若无明显提示,默认的输入文件格式是markdown |
-D FORMAT, –print-default-template=FORMAT | 打印输出格式的系统默认模板。(有关可能的格式列表,请参见-t。)用户数据目录中的模板将被忽略。 |
-t FORMAT, -w FORMAT, –to=FORMAT, –write=FORMAT | 指定输出文件的格式,默认的输出文件格式是html。注意,除非强制使用-o -,否则odt、docx和epub输出不会被定向到stdout。 |
-o FILE, –output=FILE | 将输出写入文件(FILE为文件名)。如果FILE是-,将输出到stdout。 |
–list-input-formats | 列出支持的输入文件格式 |
–list-output-formats | 列出支持的输出文件格式 |
–list-extensions[=FORMAT] | 列出支持的markdown扩展,+代表默认支持,-代表默认不支持 |
-s, –standalone | 产生输出文件时自动附带适当的头注和脚注(比如html),使用自动模板修改了HTML文档的head标签,主要包含有:meta标签、title标签、style标签(css样式文件)。 |
–toc-depth=NUMBER | 指定在目录(TOC)中的标题级别的层数。默认值是3(这意味着在目录列表中列出级别1、2和3个标题)。 |
–self-contained | 生成一个没有外部依赖关系的独立HTML文件:在转换HTML文件过程中,将依赖的“脚本(scripts)、样式表(stylesheets,)、图片(images)、视频(videos)”等文件的内容内嵌到目标HTML文件中。 |
-c URL, –css=URL | 链接到CSS样式表,即目标格式文件最后使用的CSS文件。URL为指定路径的css文件。若没有使用此选项(css文件或样式表(stylesheet)的元数据(metadata)字段)提供任何文件,pandoc生成EPUB将缺省使用epub.css文件,生成HTML将缺省使用text.css文件。如果没有找到,将使用合理的默认值。默认的CSS文件,展现效果非常丑陋,需要使用独立的CSS文件。 |
–pdf-engine=PROGRAM | 在生成PDF输出时使用指定的引擎。PROGRAM的有效值为pdflatex、lualatex、xelatex、latexmk、tectonic、wkhtmltopdf、weasyprint、prince、context和pdfroff。默认值是pdflatex。如果引擎不在您的路径中,可以在这里指定引擎的完整路径。 |
-f PROGRAM, –filter=PROGRAM | 指定一个可执行文件作为过滤器,在解析输入和编写输出之前转换pandoc AST。过滤器可以用任何语言编写。 |
通过 CSS(Cascading Style Sheets,层叠样式表)来自定义文章的样式,获得个性化的主题。
/* GitHub stylesheet for MarkdownPad (http://markdownpad.com) */
/* RESET
=============================================================================*/
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
}
/* BODY
=============================================================================*/
body {
font-family: Helvetica, arial, freesans, clean, sans-serif;
font-size: 14px;
line-height: 1.6;
color: #333;
background-color: #fff;
padding: 20px;
max-width: 960px;
margin: 0 auto;
}
body>*:first-child {
margin-top: 0 !important;
}
body>*:last-child {
margin-bottom: 0 !important;
}
/* BLOCKS
=============================================================================*/
p, blockquote, ul, ol, dl, table, pre {
margin: 15px 0;
}
/* HEADERS
=============================================================================*/
h1, h2, h3, h4, h5, h6 {
margin: 20px 0 10px;
padding: 0;
font-weight: bold;
-webkit-font-smoothing: antialiased;
}
h1 tt, h1 code, h2 tt, h2 code, h3 tt, h3 code, h4 tt, h4 code, h5 tt, h5 code, h6 tt, h6 code {
font-size: inherit;
}
h1 {
font-size: 28px;
color: #000;
}
h2 {
font-size: 24px;
border-bottom: 1px solid #ccc;
color: #000;
}
h3 {
font-size: 18px;
}
h4 {
font-size: 16px;
}
h5 {
font-size: 14px;
}
h6 {
color: #777;
font-size: 14px;
}
body>h2:first-child, body>h1:first-child, body>h1:first-child+h2, body>h3:first-child, body>h4:first-child, body>h5:first-child, body>h6:first-child {
margin-top: 0;
padding-top: 0;
}
a:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, a:first-child h5, a:first-child h6 {
margin-top: 0;
padding-top: 0;
}
h1+p, h2+p, h3+p, h4+p, h5+p, h6+p {
margin-top: 10px;
}
/* LINKS
=============================================================================*/
a {
color: #4183C4;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
/* LISTS
=============================================================================*/
ul, ol {
padding-left: 30px;
}
ul li > :first-child,
ol li > :first-child,
ul li ul:first-of-type,
ol li ol:first-of-type,
ul li ol:first-of-type,
ol li ul:first-of-type {
margin-top: 0px;
}
ul ul, ul ol, ol ol, ol ul {
margin-bottom: 0;
}
dl {
padding: 0;
}
dl dt {
font-size: 14px;
font-weight: bold;
font-style: italic;
padding: 0;
margin: 15px 0 5px;
}
dl dt:first-child {
padding: 0;
}
dl dt>:first-child {
margin-top: 0px;
}
dl dt>:last-child {
margin-bottom: 0px;
}
dl dd {
margin: 0 0 15px;
padding: 0 15px;
}
dl dd>:first-child {
margin-top: 0px;
}
dl dd>:last-child {
margin-bottom: 0px;
}
/* CODE
=============================================================================*/
pre, code, tt {
font-size: 12px;
font-family: Consolas, "Liberation Mono", Courier, monospace;
}
code, tt {
margin: 0 0px;
padding: 0px 0px;
white-space: nowrap;
border: 1px solid #eaeaea;
background-color: #f8f8f8;
border-radius: 3px;
}
pre>code {
margin: 0;
padding: 0;
white-space: pre;
border: none;
background: transparent;
}
pre {
background-color: #f8f8f8;
border: 1px solid #ccc;
font-size: 13px;
line-height: 19px;
overflow: auto;
padding: 6px 10px;
border-radius: 3px;
}
pre code, pre tt {
background-color: transparent;
border: none;
}
kbd {
-moz-border-bottom-colors: none;
-moz-border-left-colors: none;
-moz-border-right-colors: none;
-moz-border-top-colors: none;
background-color: #DDDDDD;
background-image: linear-gradient(#F1F1F1, #DDDDDD);
background-repeat: repeat-x;
border-color: #DDDDDD #CCCCCC #CCCCCC #DDDDDD;
border-image: none;
border-radius: 2px 2px 2px 2px;
border-style: solid;
border-width: 1px;
font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
line-height: 10px;
padding: 1px 4px;
}
/* QUOTES
=============================================================================*/
blockquote {
border-left: 4px solid #DDD;
padding: 0 15px;
color: #777;
}
blockquote>:first-child {
margin-top: 0px;
}
blockquote>:last-child {
margin-bottom: 0px;
}
/* HORIZONTAL RULES
=============================================================================*/
hr {
clear: both;
margin: 15px 0;
height: 0px;
overflow: hidden;
border: none;
background: transparent;
border-bottom: 4px solid #ddd;
padding: 0;
}
/* TABLES
=============================================================================*/
table th {
font-weight: bold;
}
table th, table td {
border: 1px solid #ccc;
padding: 6px 13px;
}
table tr {
border-top: 1px solid #ccc;
background-color: #fff;
}
table tr:nth-child(2n) {
background-color: #f8f8f8;
}
/* IMAGES
=============================================================================*/
img {
max-width: 100%
}
Markdownhere 是李笑来制作的一套 CSS 主题,已开源在 GitHub 上,对于中文的显示效果比较友好,字距、行距比直接套用英文模板更加自然,是为数不多的优质中文 CSS 主题。
.markdown-here-wrapper {
font-size: 16px;
line-height: 1.8em;
letter-spacing: 0.1em;
}
pre, code {
font-size: 14px;
font-family: Roboto, 'Courier New', Consolas, Inconsolata, Courier, monospace;
margin: auto 5px;
}
code {
white-space: pre-wrap;
border-radius: 2px;
display: inline;
}
pre {
font-size: 15px;
line-height: 1.4em;
display: block; !important;
}
pre code {
white-space: pre;
overflow: auto;
border-radius: 3px;
padding: 1px 1px;
display: block !important;
}
strong, b{
color: #BF360C;
}
em, i {
color: #009688;
}
hr {
border: 1px solid #BF360C;
margin: 1.5em auto;
}
p {
margin: 1.5em 5px !important;
}
table, pre, dl, blockquote, q, ul, ol {
margin: 10px 5px;
}
ul, ol {
padding-left: 15px;
}
li {
margin: 10px;
}
li p {
margin: 10px 0 !important;
}
ul ul, ul ol, ol ul, ol ol {
margin: 0;
padding-left: 10px;
}
ul {
list-style-type: circle;
}
dl {
padding: 0;
}
dl dt {
font-size: 1em;
font-weight: bold;
font-style: italic;
}
dl dd {
margin: 0 0 10px;
padding: 0 10px;
}
blockquote, q {
border-left: 2px solid #009688;
padding: 0 10px;
color: #777;
quotes: none;
margin-left: 1em;
}
blockquote::before, blockquote::after, q::before, q::after {
content: none;
}
h1, h2, h3, h4, h5, h6 {
margin: 20px 0 10px;
padding: 0;
font-style: bold !important;
color: #009688 !important;
text-align: center !important;
margin: 1.5em 5px !important;
padding: 0.5em 1em !important;
}
h1 {
font-size: 24px !important;
border-bottom: 1px solid #ddd !important;
}
h2 {
font-size: 20px !important;
border-bottom: 1px solid #eee !important;
}
h3 {
font-size: 18px;
}
h4 {
font-size: 16px;
}
table {
padding: 0;
border-collapse: collapse;
border-spacing: 0;
font-size: 1em;
font: inherit;
border: 0;
margin: 0 auto;
}
tbody {
margin: 0;
padding: 0;
border: 0;
}
table tr {
border: 0;
border-top: 1px solid #CCC;
background-color: white;
margin: 0;
padding: 0;
}
table tr:nth-child(2n) {
background-color: #F8F8F8;
}
table tr th, table tr td {
font-size: 16px;
border: 1px solid #CCC;
margin: 0;
padding: 5px 10px;
}
table tr th {
font-weight: bold;
color: #eee;
border: 1px solid #009688;
background-color: #009688;
}
sspai.css • Droplr™
/* Sspai Web Theme A theme to [sspai](ssp.ai) default theme. Developed by Codegass(wchweichenhao@gmial.com) & Yves(yves@sspai.com) Download Cuto on the App Store and Google Play! */
body {
font-size: 15px;
color:#333;
background:#fff;
font-family: Helvetica, Arial, "PingFang SC", "Microsoft YaHei", "WenQuanYi Micro Hei", "tohoma,sans-serif";
margin: 0;
padding: 10%;
}
h1 {
font-size: 2.2em;
font-weight: 700;
line-height: 1.1;
padding-top: 16px;
margin-bottom: 4px;
}
h2, h3, h4, h5, h6 {
line-height: 1.5em;
margin-top: 2.2em;
margin-bottom: 4px;
}
h2 {
font-size: 1.4em;
margin: 40px 10px 20px 0;
padding-left: 9px;
border-left: 6px solid #ff7e79;
font-weight: 700;
line-height: 1.4;
}
h3 {
font-weight: 700;
font-size: 1.2em;
line-height: 1.4;
margin: 10px 0 5px;
padding-top: 10px;
}
h4 {
font-weight: 700;
text-transform: uppercase;
font-size: 1.1em;
line-height: 1.4;
margin: 10px 0 5px;
padding-top: 10px
}
h5, h6 {
font-size: .9em;
}
h5 {
font-weight: bold;
text-transform: uppercase;
}
h6 {
font-weight: normal;
color: #AAA;
}
img {
width: 100%;
border-radius: 5px;
display: block;
margin-bottom: 15px;
height: auto;
}
dl,ol,ul {
margin-top: 12px;
margin-bottom: 20px;
padding-left: 5%;
line-height: 1.8;
}
p {
margin: 0 0 20px;
padding: 0;
line-height: 1.8;
}
a {
color: #f22f27;
text-decoration: none;
}
a:hover {
color: #f55852;
text-decoration: underline;
}
a:focus {
outline-offset: -2px;
}
blockquote {
font-size: 1em;
font-style: normal;
padding: 30px 38px;
margin: 0 0 15px;
position: relative;
line-height: 1.8;
text-indent: 0;
border: none;
color: #888;
}
blockquote:before {
content: "“";
left: 12px;
top: 0;
color: #E0E0E0;
font-size: 4em;
font-family: Arial, serif;
line-height: 1em;
font-weight: 700;
position: absolute;
}
blockquote:after {
content: "”";
right: 12px;
bottom: -26px;
color: #E0E0E0;
font-size: 4em;
font-family: Arial, serif;
line-height: 1em;
font-weight: 700;
position: absolute;
bottom: -31px;
}
strong, dfn {
font-weight: 700;
}
em, dfn {
font-style: italic;
font-weight: 400;
}
del {
text-decoration: line-through;
}
/*code {font-size:90%;}*/
/*pre {text-align:left; overflow-x: scroll; color: #257fa0; background: #f6f6f6; padding: 10pt 15pt; border-radius: 3px; border: solid 1px #e2e2e2;}*/
pre {
margin: 0 0 10px;
font-size: 13px;
line-height: 1.42857;
word-break: break-all;
word-wrap: break-word;
border-radius: 4px;
white-space: pre-wrap;
display: block;
background: #f8f8f8;
padding: 10px 20px;
border: none;
margin-bottom: 25px;
color: #666;
font-family: Courier, sans-serif;
}
code {
color: #c7254e;
background-color: #f9f2f4;
border-radius: 4px;
font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
padding: 2px 4px;
font-size: 90%;
}
p > code {
color: #c7264e;
background-color: #f9f2f4;
font-size: .95em;
border-radius: 3px;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
}
figure {
margin: 1em 0;
}
figcaption {
font-size: 0.75em;
padding:0.5em 2em;
margin-bottom: 2em;
}
figure img {
margin-bottom: 0px;
}
hr {
margin-top: 20px;
margin-bottom: 20px;
border: 0;
border-top: 1px solid #eee;
}
ol p, ul p {
margin-bottom: 0px;
}
li {
margin-bottom: 0.75em;
margin-top: 0.75em;
}
ol#footnotes {
font-size: 0.95em;
padding-top: 1em;
margin-top: 1em;
margin-left: 0;
border-top: 1px solid #eaeaea;
counter-reset: footer-counter;
list-style: none;
color: #555;
padding-left: 5%;
margin: 20px 0;
}
ol#footnotes li {
margin-bottom: 10px;
margin-left: 16px;
font-weight: 400;
line-height: 2;
list-style-type: none;
}
ol#footnotes li:before {
content: counter(footer-counter) ". ";
counter-increment: footer-counter;
font-weight: 800;
font-size: .95em;
}
@keyframes highfade {
0% {background-color: none;}
20% {background-color: yellow;}
100% {background-color: none;}
}
@-webkit-keyframes highfade {
0% {background-color: none;}
20% {background-color: yellow;}
100% {background-color: none;}
}
a:target, ol#footnotes li:target, sup a:target {
animation-name: highfade;
animation-duration: 2s;
animation-iteration-count: 1;
animation-timing-function: ease-in-out;
-webkit-animation-name: highfade;
-webkit-animation-duration: 2s;
-webkit-animation-iteration-count: 1;
-webkit-animation-timing-function: ease-in-out;
}
a:target {
border:0;
outline: 0;
animation-iteration-count: 1;
-webkit-animation-timing-function: ease-in-out;
}
a:target {
border:0;
outline: 0;
tion-iteration-count: 1;
-webkit-animation-timing-function: ease-in-out;
}
a:target {
border:0;outline: 0;
}
备注:
在个性化定制自己的CSS样式文件时,打开输出的HTML格式文件查看HTML文档(F12),可查看HTML结构。
官网:https://highlightjs.org/
官方文档:http://www.ghostchina.com/adding-syntax-highlighting-to-ghost-using-highlight-js/
highlight.js,轻量级的Web代码语法高亮库,建议下载到本地进行本地化转换代码高亮,在线转换需要选择合适的CDN(可能耗时长)
使用方法:
本地引用 highlight.js
下载后的 highlight.js 为 highlight.pack.js;假设路径为:当前md文档的assets/highlight
<script type="text/javascript" src="assets/highlight/highlight.pack.js"></script>
本地引用highlight.js的css文件
在路径 /highlight/styles 中选择一个CSS文件,可在 官网的演示 中查看不同CSS文件的代码高亮显示效果
<link rel="stylesheet" href="assets/highlight/styles/a11y-light.css" type="text/css"></link>
调用initHighlightingOnLoad方法
<script>hljs.initHighlightingOnLoad();</script>
只需要上述3行代码,就能对HTML文档中 pre 和 code 标签内的源代码自动识别语言,并执行代码高亮。
在线引用的,参考:Markdown文章添加代码高亮
<!--在线(https://www.bootcdn.cn/jquery/)引用($("")符号)jquery.min.js-->
<!-- <script src="http://code.jquery.com/jquery-1.7.2.min.js"></script> -->
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<!--侧栏目录生成代码-->
<script>
//标题序号计数器
var hCount = [0, 0, 0, 0, 0, 0];
//设置计数器
function setHCount(number) {
//当前计数器加一
hCount[number - 1]++;
for (var i = number, length = hCount.length; i < length; i++) {
//子目录计数器全部置零
hCount[i] = 0;
}
}
//重命名目录名称
function setHTagValue(item, number) {
//获取标题名
var text = $(item).get(0).innerHTML;
//初始化空字符串
var before = "";
//生成序号
for (var i = 0, length = hCount.length; i < number; i++) {
if (i < number - 1)
before += hCount[i] + ".";
else
before += hCount[i] + " ";
}
//在标题前面若需要添加序号,在text前面加上序号参数(before)即可
$(item).get(0).innerHTML = before + text;
}
function renameHTag(item) {
var tag = $(item).get(0).localName;
if (tag === "h1") {
setHCount(1);
//console\.log("捕获到标签:%s", tag);
setHTagValue(item, 1);
}
if (tag === "h2") {
setHCount(2);
//console.log("捕获到标签:%s", tag);
setHTagValue(item, 2);
}
if (tag === "h3") {
setHCount(3);
//console.log("捕获到标签:%s", tag);
setHTagValue(item, 3);
}
if (tag === "h4") {
setHCount(4);
//console.log("捕获到标签:%s", tag);
setHTagValue(item, 4);
}
if (tag === "h5") {
setHCount(5);
//console.log("捕获到标签:%s", tag);
setHTagValue(item, 5);
}
if (tag === "h6") {
setHCount(6);
//console.log("捕获到标签:%s", tag);
setHTagValue(item, 6)
}
}
$(document).ready(function () {
$("h1,h2,h3,h4,h5,h6").each(function (i, item) {
//给<H>类标签编号
renameHTag(item);
//获取标签的名字,h1,还是h2
var tag = $(item).get(0).localName;
//为该标签设置id属性
$(item).attr("id", "wow" + i);
//添加一个页内超链接,并设置class选择器
// $("#category").append('<a class="new'+tag+'" href="#wow'+i+'">'+$(this).text()+'</a></br>');
$("#category").append('<a class="new' + tag + '" href="#wow' + i + '">' + $(item).text() + '</a></br>');
//为每一个标题超链接的class属性设置左边距
$(".newh1").css("margin-left", 0);
$(".newh2").css("margin-left", 20);
$(".newh3").css("margin-left", 40);
$(".newh4").css("margin-left", 60);
$(".newh5").css("margin-left", 80);
$(".newh6").css("margin-left", 100);
});
//设置class选择器为.book-body的html内容
$(".book-body").html($(".book-body").nextAll())
});
</script>
<style type="text/css">
@media (max-width: 1600px) {
.book-body {
/* padding-left: 200px; */
padding-right: 0px;
}
}
@media (max-width: 1400px) {
.book-body {
/* padding-left: 200px; */
padding-right: 0px;
}
}
@media (max-width: 1200px) {
.book-body {
/* padding-left: 300px; */
padding-left: 0px;
}
}
@media (max-width: 700px) {
.book-body {
padding-left: 0px;
}
}
@media (min-width: 600px) {
#category {
/* 绝对定位 */
position: fixed;
/* left: 20px; */
/* 目录显示的位置 */
right: 0px;
top: 6%;
/* 目录栏的高度,这里设置为60%主要是为了不挡住返回顶部和折叠按钮 */
max-height: 60%;
/* 目录显示的底色 */
background: #E1FFFF;
/* 目录添加边框 */
border: 1px solid #aaaaaa;
overflow: auto;
}
}
@media (-webkit-max-device-pixel-ratio: 1) {
::-webkit-scrollbar-track-piece {
background-color: #FFF
}
::-webkit-scrollbar {
width: 6px;
height: 6px
}
::-webkit-scrollbar-thumb {
background-color: #c2c2c2;
background-clip: padding-box;
min-height: 28px
}
::-webkit-scrollbar-thumb:hover {
background-color: #A0A0A0
}
}
</style>
<script>
// id="category" onclick="showOrCloseCategory()"
function showOrCloseCategory() {
var id = document.getElementById("category");
var book_body=document.getElementById("book_body");
//如果展开了
if (id.style.display == 'block') {
//console.log("开始展开");
id.style.display='none';
id.style.width="0%";
book_body.style.width="80%";
book_body.style.paddingleft=0;
}
//如果被折叠了
else if (id.style.display =='none') {
//console.log("开始折叠");
id.style.display = 'block';
book_body.style.width="80%";
id.style.width="auto";
}
}
</script>
<!--返回顶部-->
<a href="javascript:scroll(0,0)" style="position:fixed;float:right;right:40px;top:68%">▲ Top</a>
<!--返回底部-->
<a href="javascript:scroll(0,document.body.scrollHeight)" style="position:fixed;float:right;right:23px;top:76%">▼ Buttom</a>
<!--目录-->
<button onclick="showOrCloseCategory()" style="position:fixed;float:right;right:40px;top:71%;height:36px;;background-color:#7FFFAA">目录</button>
<!--文章主体部分-->
<div class="book-body" id="book_body" style="width:80%;display:block"> </div>
<!--目录栏,设置占用宽度为20%可以根据实际情况设置-->
<div class="book-summary" id="category" style="width:auto;display:none" ></div>
pandoc -s -f gfm -t html5 --css=css/github.css test.md -o test.html
-s
:表示使用标准模板输出,为pdf、epub、epub3、fb2、docx和odt自动设置适当的页眉和页脚-f gfm
:表示使用 gfm(Github Flavored MarkDown) 引擎解析文件
markdown_github
,只有在gfm
不支持扩展的情况下才使用markdown_github
-t html5
:表示输出格式为html5--css=css/github.css
:表示输出的HTML文件使用github.css样式表(指定路径)
css/
表示github.css文件的路径(相对路径)test.md -o test.html
:表示将MarkDown文件“test.md”输出为.html文件(建议不同名字)
-o FILE
命令表示将输出写入指定文件而不是stdout,若FILE
是-
,输出将输出到stdoutpandoc模板
对于不同的输出文档而言,使用pandoc -D <format>
可以输出该格式的模板。其中可以看到模板中使用了哪些变量。对于其中使用的变量一般可以使用YAML元数据块来设定。也可以在命令行中使用-M
参数来指定。其中有一个重要的变量body
,它是整个markdown的内容。这个是无法通过YAML或者命令行来设置的。
例如:pandoc使用html模板生成html页面,通过命令pandoc -D html
查看缺省的模板,:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="$lang$" xml:lang="$lang$"$if(dir)$ dir="$dir$"$endif$>
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
$for(author-meta)$
<meta name="author" content="$author-meta$" />
$endfor$
$if(date-meta)$
<meta name="dcterms.date" content="$date-meta$" />
$endif$
$if(keywords)$
<meta name="keywords" content="$for(keywords)$$keywords$$sep$, $endfor$" />
$endif$
<title>$if(title-prefix)$$title-prefix$ – $endif$$pagetitle$</title>
<style type="text/css">
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
span.underline{text-decoration: underline;}
div.column{display: inline-block; vertical-align: top; width: 50%;}
$if(quotes)$
q { quotes: "“" "”" "‘" "’"; }
$endif$
</style>
$if(highlighting-css)$
<style type="text/css">
$highlighting-css$
</style>
$endif$
$for(css)$
<link rel="stylesheet" href="$css$" />
$endfor$
$if(math)$
$math$
$endif$
<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
<![endif]-->
$for(header-includes)$
$header-includes$
$endfor$
</head>
<body>
$for(include-before)$
$include-before$
$endfor$
$if(title)$
<header>
<h1 class="title">$title$</h1>
$if(subtitle)$
<p class="subtitle">$subtitle$</p>
$endif$
$for(author)$
<p class="author">$author$</p>
$endfor$
$if(date)$
<p class="date">$date$</p>
$endif$
</header>
$endif$
$if(toc)$
<nav id="$idprefix$TOC">
$table-of-contents$
</nav>
$endif$
$body$
$for(include-after)$
$include-after$
$endfor$
</body>
</html>
在进行模板处理时,pandoc中会自动生成一些变量,某些变量是由用户指定。在模板中使用$变量名$
引用一个变量,模板中可以使用条件判断。,形式如下:
$if(title)$
<title>$title$</title>
$else$
<title>缺省的标题</title>
$endif$
上面的意思是,如果定义了title变量,那么就输出title的内容,否则就输出缺省的标题。
明白默认模板中的内容后,可以定义自己的模板。使用--template=FILENAME
来指定模板文件。
pandoc test.md -o test.docx
这个转换比较简单,不用多做配置。
pandoc --pdf-engine=xelatex --template=D:\tools\Pandoc\pm-template.latex test.md -o test.pdf
pandoc 不能直接生成 pdf 文档,需要借助 LaTeX 引擎。其基本转换流程如下:
pandoc -f gfm -t latex --pdf-engine=xelatex test.md -o test.pdf
可以生成一个pdf,但是其中只有英文,没有中文!
查看本地中文字体的命令:fc-list :lang=zh
。
D:/Tex Live/texmf-dist/fonts/opentype/public/fandol/FandolFang-Regular.otf: FandolFang,FandolFang R:style=Regular
C:/WINDOWS/fonts/msyhl.ttc: Microsoft YaHei,Microsoft YaHei Light:style=Light,Regular
C:/WINDOWS/fonts/Dengb.ttf: DengXian:style=Bold
D:/Tex Live/texmf-dist/fonts/truetype/public/arphic-ttf/bkai00mp.ttf: AR PL KaitiM Big5,文鼎PL中楷:style=Regular
D:/Tex Live/texmf-dist/fonts/opentype/public/fandol/FandolKai-Regular.otf: FandolKai:style=Regular
C:/WINDOWS/fonts/STZHONGS.TTF: STZhongsong:style=Regular
C:/WINDOWS/fonts/simsun.ttc: NSimSun,新宋体:style=Regular,常规
D:/Tex Live/texmf-dist/fonts/truetype/public/arphic-ttf/gbsn00lp.ttf: AR PL SungtiL GB:style=Regular
C:/WINDOWS/fonts/AdobeFanHeitiStd-Bold.otf: Adobe Fan Heiti Std,Adobe 繁黑體 Std B,Adobe Fan Heiti Std B:style=B,Bold
C:/WINDOWS/fonts/AdobeHeitiStd-Regular.otf: Adobe Heiti Std,Adobe Heiti Std R:style=R,Regular
C:/WINDOWS/fonts/AdobeSongStd-Light.otf: Adobe Song Std,Adobe Song Std L:style=L,Regular
C:/WINDOWS/fonts/Dengl.ttf: DengXian,DengXian Light:style=Light,Regular
C:/WINDOWS/fonts/AdobeMingStd-Light.otf: Adobe Ming Std,Adobe 明體 Std L,Adobe Ming Std L:style=L,Regular
C:/WINDOWS/fonts/AdobeFangsongStd-Regular.otf: Adobe Fangsong Std,Adobe Fangsong Std R:style=R,Regular
C:/WINDOWS/fonts/simfang.ttf: FangSong:style=Regular,Normaali
C:/WINDOWS/fonts/simkai.ttf: KaiTi:style=Regular,Normaali
C:/WINDOWS/fonts/msyh.ttc: Microsoft YaHei UI:style=Normal
C:/WINDOWS/fonts/STCAIYUN.TTF: STCaiyun:style=Regular
C:/WINDOWS/fonts/Deng.ttf: DengXian:style=Regular
C:/WINDOWS/fonts/STXINGKA.TTF: STXingkai:style=Regular
C:/WINDOWS/fonts/msyhl.ttc: Microsoft YaHei UI,Microsoft YaHei UI Light:style=Light,Regular
C:/WINDOWS/fonts/STXINWEI.TTF: STXinwei:style=Regular
C:/WINDOWS/fonts/msyhbd.ttc: Microsoft YaHei UI:style=Έντονα
D:/Tex Live/texmf-dist/fonts/opentype/public/fandol/FandolSong-Bold.otf: FandolSong:style=Bold
C:/WINDOWS/fonts/msjhl.ttc: Microsoft JhengHei,微軟正黑體 Light:style=Light,Regular
C:/WINDOWS/fonts/msjhl.ttc: Microsoft JhengHei UI,Microsoft JhengHei UI Light:style=Light,Regular
C:/WINDOWS/fonts/msyh.ttc: Microsoft YaHei:style=Normal
C:/WINDOWS/fonts/SIMYOU.TTF: YouYuan:style=Regular
D:/Tex Live/texmf-dist/fonts/truetype/public/arphic-ttf/bsmi00lp.ttf: AR PL Mingti2L Big5,文鼎PL細上海宋:style=Reguler,Regular
D:/Tex Live/texmf-dist/fonts/opentype/public/fandol/FandolHei-Regular.otf: FandolHei:style=Regular
C:/WINDOWS/fonts/STXIHEI.TTF: STXihei:style=Regular
D:/Tex Live/texmf-dist/fonts/truetype/public/arphic-ttf/gkai00mp.ttf: AR PL KaitiM GB:style=Regular
C:/WINDOWS/fonts/STKAITI.TTF: STKaiti:style=Regular
C:/WINDOWS/fonts/STLITI.TTF: STLiti:style=Regular
C:/WINDOWS/fonts/msyhbd.ttc: Microsoft YaHei:style=Έντονα
D:/Tex Live/texmf-dist/fonts/opentype/public/fandol/FandolHei-Bold.otf: FandolHei:style=Bold
C:/WINDOWS/fonts/simsun.ttc: SimSun,宋体:style=Regular,常规
C:/WINDOWS/fonts/STHUPO.TTF: STHupo:style=Regular
C:/WINDOWS/fonts/AdobeKaitiStd-Regular.otf: Adobe Kaiti Std,Adobe Kaiti Std R:style=R,Regular
C:/WINDOWS/fonts/STFANGSO.TTF: STFangsong:style=Regular
C:/WINDOWS/fonts/msjh.ttc: Microsoft JhengHei:style=Regular
C:/WINDOWS/fonts/FZYTK.TTF: FZYaoTi:style=Regular
D:/Tex Live/texmf-dist/fonts/opentype/public/fandol/FandolSong-Regular.otf: FandolSong:style=Regular
C:/WINDOWS/fonts/SIMLI.TTF: LiSu:style=Regular
C:/WINDOWS/fonts/msjhbd.ttc: Microsoft JhengHei UI:style=Félkövér
C:/WINDOWS/fonts/STSONG.TTF: STSong:style=Regular
C:/WINDOWS/fonts/msjh.ttc: Microsoft JhengHei UI:style=Regular
C:/WINDOWS/fonts/msjhbd.ttc: Microsoft JhengHei:style=Félkövér
C:/WINDOWS/fonts/simhei.ttf: SimHei:style=Normal
C:/WINDOWS/fonts/FZSTK.TTF: FZShuTi:style=Regular
XeLaTeX可以直接使用系统中的字体,无需自己生成字体文件。
pandoc -f gfm -t latex --pdf-engine=xelatex -V mainfont="Microsoft YaHei" test.md -o test.pdf
可以生成一个pdf,可以输出中文,但中文输出过长不会换行!
中文的换行 通过\XeTeXlinebreaklocale "zh"
实现。pandoc的缺省模板中是没有这个设置的。
pandoc的默认latex模板:pandoc -D latex
因此考虑修改缺省的latex模板。方法如下:
导出缺省的模板 pandoc -D latex > template.latex
在模板的这部分下面加上这一行\XeTeXlinebreaklocale "zh"
$if(mathfont)$
$if(mathspec)$
\ifxetex
\setmathfont(Digits,Latin,Greek)[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
\else
\setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
\fi
$else$
\setmathfont[$for(mathfontoptions)$$mathfontoptions$$sep$,$endfor$]{$mathfont$}
$endif$
$endif$
在上面的命令行中指定使用新的模板。
安装TexLive 2018
这是个比较暴力的方法。该包有3G,安装需要较长的时间(估计1个小时左右)。
使用指定字体(系统字体或下载字体)时,导出pdf时可成功显示中文
pandoc --pdf-engine=xelatex -V mainfont="Microsoft YaHei" test.md -o test.pdf
中文正常显示后,发现中文不换行。原因是 Pandoc 使用的latex模板文件需要修改。
官网:
个人博客:
感谢您的赞赏支持: