Skip to content

Commit

Permalink
1.3.0
Browse files Browse the repository at this point in the history
  • Loading branch information
LeafYeeXYZ committed May 26, 2024
1 parent 7de2ca3 commit 2994183
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 66 deletions.
10 changes: 7 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,15 @@
bun add -g leaf-markdown-paper
# 使用 (第一个参数为源文件相对路径)
mdp <path> [--option]
# 查看使用方法
mdp
```

| 参数 | 说明 |
| :---: | :---: |
| `--out=xxx` | 输出文件路径, 默认为源文件路径的同名 `PDF` 文件 |
| `--browser=xxx` | 自定义浏览器可执行文件, 非 `Windows` 系统则必须 |
| `--out=xxx` | 输出文件相对路径<br>默认为源文件路径的同名 `PDF` 文件 |
| `--browser=xxx` | 浏览器相对路径, 非 `Windows` 系统则必须<br>默认为 `C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe` |
| `--style=xxx` | 自定义 `CSS` 文件相对路径/模板<br>默认为 `APS` (`Acta Psychologica Sinica`) |
| `--showTitle` | 在页眉显示文件名, 默认不显示 |
| `--hideFooter` | 隐藏页码, 默认显示 |
| `--outputHTML` | 输出 `HTML` 文件, 默认不输出 |
Expand All @@ -32,7 +35,7 @@ mdp <path> [--option]

![图片标题](图片路径)

#table-title# 表格标题
> 表格标题

| 表头1 | 表头2 |
| :---: | :---: |
Expand All @@ -45,6 +48,7 @@ mdp <path> [--option]
```

## 更新日志
- `1.3.0` (2024-05-26): 支持自定义 `CSS` 文件, 简化编写格式, 优化帮助信息
- `1.2.3` (2024-05-25): 修复中文图片路径导致的错误
- `1.2.2` (2024-05-21): 优化样式, 优化命令
- `1.2.1` (2024-05-21): 优化摘要样式
Expand Down
65 changes: 23 additions & 42 deletions css/APS.css
Original file line number Diff line number Diff line change
@@ -1,33 +1,30 @@
* {
font-family: 'Times New Roman'; /* 所有数字和英文字体都用 Times New Roman */
line-height: 1.5; /* 1.5倍行距 */
font-family: 'Times New Roman', '宋体'; /* 所有数字和英文字体都用 Times New Roman */
line-height: 1.55em; /* 1.5倍行距 */
margin: 0;
}

h1 { /* 中文题目: 二号黑体 */
font-size: 29px;
font-weight: normal;
font-family: '黑体';
text-align: center;
margin-top: 0;
margin-bottom: 9px;
}
.author { /* 作者姓名: 四号仿宋 */
font-size: 18px;
font-family: '仿宋';
text-align: center;
margin-bottom: 3px;
}
.school { /* 作者单位: 小五宋体 */
font-size: 12px;
font-family: '宋体';
text-align: center;
margin-top: 3px;
margin-bottom: 29px;
margin-bottom: 38px;
}
.abstract { /* 摘要和关键词: 五号宋体 */
font-size: 14px;
font-family: '宋体';
text-align: justify;
margin-top: 9px;
margin-bottom: 4.5px;
padding: 0 28px;
&::before {
content: '摘 要';
Expand All @@ -38,9 +35,7 @@ h1 { /* 中文题目: 二号黑体 */
}
.keywords {
font-size: 14px;
font-family: '宋体';
margin-top: 0;
margin-bottom: 29px;
margin-bottom: 31px;
padding: 0 28px;
&::before {
content: '关键词';
Expand All @@ -49,31 +44,31 @@ h1 { /* 中文题目: 二号黑体 */
margin-right: 14px;
}
}

h2 { /* 一级标题: 四号宋体 */
font-size: 18px;
font-weight: normal;
font-family: '宋体';
margin: 9px 0;
margin: 7px 0;
}
h3 { /* 二级标题: 五号黑体 */
font-size: 14px;
font-weight: normal;
font-family: '黑体';
margin: 7px 0;
margin: 5px 0;
}
h4 { /* 三级标题: 五号黑体 */
font-size: 14px;
font-weight: normal;
font-family: '黑体';
margin: 7px 0;
margin: 3px 0;
}

p { /* 正文: 五号宋体 */
font-size: 14px;
font-family: '宋体';
text-indent: 2em;
text-indent: 24px;
text-align: justify;
margin: 7px 0;
}

h5 { /* "参考文献": 五号黑体 */
font-size: 14px;
font-weight: normal;
Expand All @@ -82,27 +77,25 @@ h5 { /* "参考文献": 五号黑体 */
margin-bottom: 7px;
margin-top: 20px;
}
ul { /* 参考文献的项目: 小五号宋体 */
ul, ol { /* 参考文献的项目: 小五号宋体 */
list-style-type: none;
padding: 0;
& > li {
font-size: 12px;
font-family: '宋体';
margin: 6px 0;
text-align: justify;
text-indent: -24px;
padding-left: 24px;
}
& a {
text-decoration: none;
font-family: '宋体';
color: black;
}
}

.image-title { /* 图片的标题: 小五号宋体 */
font-size: 12px;
font-weight: normal;
font-family: '宋体';
text-align: center;
margin: 6px 0;
}
Expand All @@ -111,24 +104,23 @@ img {
max-width: 100%;
margin: 0 auto;
}
.table-title { /* 表格的标题: 小五号宋体 */

blockquote, blockquote > p { /* 表格的标题: 小五号宋体 */
font-size: 12px;
font-weight: normal;
font-family: '宋体';
text-align: center;
margin: 6px 0;
margin: 0;
}
blockquote > p { margin: 6px 0; }
table { /* 表格: 小五号宋体 */
font-size: 12px;
font-family: '宋体';
position: relative;
border-top: 1px solid black;
border-bottom: 1px solid black;
width: 100%;
max-width: 100%;
margin: 0 auto;
& th, & td {
font-family: '宋体';
font-weight: normal;
}
& thead::after { /* 用来做三线表中间的横线 */
Expand All @@ -140,18 +132,7 @@ table { /* 表格: 小五号宋体 */
}
}

ol {
padding: 0;
padding-left: 28px;
& > li {
font-size: 14px;
font-family: '宋体';
margin: 7px 0;
text-align: justify;
}
& a {
text-decoration: none;
font-family: '宋体';
color: black;
}
b, strong { /* 加粗按黑体处理 */
font-family: '黑体';
font-weight: normal;
}
53 changes: 34 additions & 19 deletions lib/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { marked } from 'marked'
import puppeteer from 'puppeteer-core'
import fs from 'node:fs/promises'
import path from 'node:path'
import { readFileSync } from 'node:fs'
import { readFileSync, statSync } from 'node:fs'

export class Options {
/** markdown 文件绝对路径 */
Expand All @@ -19,8 +19,19 @@ export class Options {
outputDOCX: boolean
/** 不添加页脚 */
hideFooter: boolean
/** 样式 */
style: string
/** 正确格式 */
static format = 'mdp <path> [--out=xxx] [--outputHTML] [--browser=xxx] [--showTitle] [--outputDOCX] [--hideFooter]'
static format = `mdp <markdown> [--options]
<markdown>: markdown 文件相对路径
--out=<path>: 输出文件相对路径 (默认为 <markdown>)
--style=<path>: 样式文件相对路径 (默认为 APS)
--outputHTML: 输出 html 文件 (默认不输出)
--outputDOCX: 输出 docx 文件 (默认不输出)
--showTitle: 在页眉显示文件名 (默认不显示)
--hideFooter: 不添加页脚 (默认添加)
--browser=<path>: 自定义浏览器路径 (默认为 Edge)`
/**
* 生成应用参数
* @param args 命令行参数
Expand All @@ -30,6 +41,7 @@ export class Options {
// 默认参数
this.src = ''
this.out = ''
this.style = path.resolve(import.meta.dir, '../css/APS.css')
this.outputHTML = false
this.outputDOCX = false
this.showTitle = false
Expand All @@ -53,6 +65,22 @@ export class Options {
this.out = a[1].endsWith('.pdf') ? path.resolve(cwd, a[1]) : path.resolve(cwd, a[1] + '.pdf')
break
}
case '--style': {
const a = arg.split('=')
if (a.length !== 2 || a[1] === '') throw SyntaxError()
this.style = a[1].endsWith('.css') ? path.resolve(import.meta.dir, '../css', a[1]) : path.resolve(import.meta.dir, '../css', a[1] + '.css')
try {
statSync(this.style)
} catch (_) {
this.style = a[1].endsWith('.css') ? path.resolve(cwd, a[1]) : path.resolve(cwd, a[1] + '.css')
try {
statSync(this.style)
} catch (_) {
throw Error('样式文件不存在')
}
}
break
}
case '--outputHTML': {
this.outputHTML = true
break
Expand Down Expand Up @@ -92,25 +120,12 @@ class Labels {
* @returns 转换后的字符串
*/
static transform(md: string): string {
md = Labels.tableTitle(md)
md = Labels.author(md)
md = Labels.school(md)
md = Labels.keywords(md)
md = Labels.abstract(md)
return md
}
/**
* 表格标题
* @param md markdown 字符串
* @returns 转换后的字符串
* @example
* #table-title# xxx
* ->
* <div class="table-title">xxx</div>
*/
static tableTitle(md: string): string {
return md.replace(/#table-title# (.*)/mg, '<div class="table-title">$1</div>')
}
/**
* 作者
* @param md markdown 字符串
Expand Down Expand Up @@ -175,15 +190,15 @@ export async function main(args: string[], cwd: string): Promise<void> {
process.exit(0)
}
// 解析参数
const options = new Options(args, cwd)
console.log('\n开始生成\n')
const options = new Options(args, cwd)
// 渲染 markdown
await renderMarkdown(options)
console.log('生成成功\n')

} catch (e) {
if (e instanceof SyntaxError) console.error(`\n参数错误, 正确格式:\n${Options.format}\n`)
else if (e instanceof Error) console.error(`\n错误, 错误信息:\n${e.name}\n${e.message}\n`)
if (e instanceof SyntaxError) console.error(`参数错误, 正确格式:\n${Options.format}\n`)
else if (e instanceof Error) console.error(`错误:\n${e.message}\n`)

} finally {
process.exit(0)
Expand All @@ -203,7 +218,7 @@ async function renderMarkdown(options: Options): Promise<void> {
// 转换 markdown 为 html
const html = await marked(md)
// 读取 css 文件
const css = await fs.readFile(path.resolve(import.meta.dir, '../css/APS.css'))
const css = await fs.readFile(options.style, { encoding: 'utf-8' })
// 创建网页文件
const title = path.basename(options.src).replace('.md', '')
let web = `
Expand Down
5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
{
"name": "leaf-markdown-paper",
"type": "module",
"version": "1.2.3",
"version": "1.3.0",
"author": {
"name": "LeafYeeXYZ",
"email": "[email protected]"
},
"license": "GPL-3.0-only",
"scripts": {
"mdp": "bun ./bin/mdp.ts",
"pub": "npm publish"
"pub": "npm publish",
"try": "bun mdp ../../GoogleDrive/Curriculum/论文写作/论文.md --out=./demo/论文 --outputHTML"
},
"bin": {
"mdp": "./bin/mdp.ts"
Expand Down

0 comments on commit 2994183

Please sign in to comment.