Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
魔法少女赵志辉
ap2021a-project
Commits
8e83663c
Commit
8e83663c
authored
Sep 11, 2021
by
魔法少女赵志辉
🍊
Browse files
Update description.
parent
46e7c165
Changes
2
Hide whitespace changes
Inline
Side-by-side
project1-draft/project1-document_previewer-draft.pdf
View file @
8e83663c
No preview for this file type
project1-draft/project1-document_previewer-draft.tex
View file @
8e83663c
...
...
@@ -2,28 +2,11 @@
\def\CC
{
{
C
\nolinebreak
[4]
\hspace
{
-.05em
}
\raisebox
{
.4ex
}{
\small\bf
++
}}
}
\usepackage
[most]
{
tcolorbox
}
\newenvironment
{
note
}
{
\begin{center}
\em
\begin{tcolorbox}
[colback=gray!5,
colframe=black,
width=.9
\textwidth
,
arc=1mm, auto outer arc,
boxrule=0.5pt,
]
}
{
\end{tcolorbox}
\end{center}
}
\title
{
\vspace
{
-50pt
}
\textbf
{
\Huge
Project1
}
\\
\textbf
{
\huge
文档预览器
}
\\
\small
Version 0.
1
.0
\\
\small
Version 0.
2
.0
\\
\text
{
\color
{
red
}
此文档尚未经过助教和老师的审核,只作草稿使用。
}
}
...
...
@@ -62,38 +45,39 @@ Word格式的话看起来则更加困难:记事本打不开它们了。
预览器必须是从第一行代码开始写成的,符合面向对象和泛型程序设计范式的,
\CC
{}
程序。推荐使用第三方的
\CC
{}
图形库来完成界面的绘制,键盘鼠标事件的捕获和处理等等内容,这样可以集中精力设计和实现预览器的架构。
\section
{
技术指标
}
我们参考带提供Markdown预览支持插件的Visual Studio Code,制订了这份技术指标。本节是Project1的基本要求,
显式标注成
\begin{note}
可选的
我们参考带提供Markdown预览支持插件的Visual Studio Code,制订了这份技术指标。本节是Project1的基本要求,
其中描述的所有内容都需要完成,但是所有注记内容,如
\cref
{
note:what
_
is
_
note
}
所述,是可选的内容,仅供参考。
\begin{note}
\label
{
note:what
_
is
_
note
}
写在这种(看起来就很显眼的)注记里的是可选的内容,或者是评注性质的段落。这些内容仅供参考。
\end{note}
内容之外的所有内容都需要完成。
\subsection
{
工作流程
}
预览器应该接受一个文件
(
的路径
)
作为参数。它将打开
传入的文件,根据其扩展名确定文件使用的语言,然后分别
进行渲染,最终把渲染
得到
的结果展示在预览界面中。
预览器应该接受一个文件的路径作为参数。它将打开
这个文件,然后
进行渲染,最终
它将
把渲染的结果展示在预览界面中。
\begin{note}
为了使用上的方便,当然可以加入一个图形化的文件选择界面——这应该是每个图形库都会提供的设施,所以应该并不困难。
\end{note}
\begin{note}
可以考虑加入一个编辑界面。对于可以直接编辑的文本,在编辑界面中进行修改,则可以在预览界面中看到修改后的文档的渲染结果。编辑功能
\text
{
\color
{
red
}
在Project1中
}
不做要求。
可以考虑加入一个
\textbf
{
编辑界面
}
。对于可以直接编辑的文本,在编辑界面中进行修改,则可以在预览界面中看到修改后的文档的渲染结果。编辑功能
\text
{
\color
{
red
}
在Project1中
}
不做要求
,但请在自己的项目中留好接口,方便完成潜在的后续要求
。
\end{note}
\begin{note}
可以考虑加入
一个文件搜索器。可以通过文档的名字对其进行搜索,也可以用正则表达式进行模糊匹配和重命名。文件搜索器
\text
{
\color
{
red
}
在Project1中
}
不做要求。
可以考虑加入
\textbf
{
搜索功能
}
。这样,我们可以通过输入
\textbf
{
正则表达式
}
\footnote
{
正则表达式是一种很有力的工具,可以提高写文档时的生产力。不熟悉的同学可以在(正规的)搜索引擎中查阅有关资料。
}
,对文档的名字或者内容进行搜索、匹配和替换。搜索功能
\text
{
\color
{
red
}
在Project1中
}
不做要求
,但请在自己的项目中留好接口,方便完成潜在的后续要求
。
\end{note}
预览器对文档的渲染结果应该是一个标准的HTML文件。这样,可以方便地使用浏览器或者图形库内置的WebView之类的设施把渲染的结果用网页的方式展现出来。
如果感到困惑,可以这样理解:
\textbf
{
我们要实现的,是一个解析器/转换器/编译器。
}
输入是一种带
\emph
{
给人读的
}
标记的文本,比如Markdown;
输出是另一种
\emph
{
给程序读的
}
带标记的文本,即HTML(
\textbf
{
H
}
yper
\textbf
{
T
}
ext
\textbf
{
M
}
arkup
\textbf
{
L
}
anguage)。这种文本被广泛地用于互联网页面的展示。
\begin{note}
如果感到困惑,可以这样理解:
\textbf
{
我们要实现的,是一个解析器/转换器/编译器。
}
输入是一种带
\textbf
{
给人读的
}
标记的文本,比如Markdown;
输出是另一种
\textbf
{
给程序读的
}
带标记的文本,即HTML
\footnote
{
HTML即
\textbf
{
H
}
yper
\textbf
{
T
}
ext
\textbf
{
M
}
arkup
\textbf
{
L
}
anguage。这种文本被广泛地用于互联网页面的展示。
}
。
\end{note}
\begin{note}
是的,完全没有必要重新造一个HTML渲染器。那样的话太无聊了,一点也不有趣。
是的,完全没有必要重新造一个HTML渲染器。那样的话太无聊了,一点也不有趣。
图形库的作者
\textbf
{
一定
}
已经造好轮子了,我们直接用吧。
\end{note}
\subsection
{
支持的语言
}
预览器需要支持使用下列
常规语法的Markdown
\footnote
{
可以参考
\url
{
https://www.markdown.xyz/basic-syntax
}
中给出的语法。
}
:
预览器需要支持使用下列
语法
\footnote
{
可以参考
\url
{
https://www.markdown.xyz/basic-syntax
}
中给出的语法。
}
的Markdown文档
:
\begin{description}
\item
[标题]
在一行的起始位置连用若干个
\mintinline
{
md
}{
#
}
,表示不同级别的标题。也可以使用连续的
\mintinline
{
md
}{
=
}
或者
\mintinline
{
md
}{
-
}
。
\item
[段落]
使用一个空行来开启新的段落。
...
...
@@ -107,7 +91,9 @@ Word格式的话看起来则更加困难:记事本打不开它们了。
\item
[HTML标签]
可以直接在Markdown文本中使用HTML的语法。
\end{description}
\begin{note}
对
\LaTeX
{}
和Word的支持
\text
{
\color
{
red
}
在Project1中
}
不做要求。Markdown的高级语法也不必强求,开心就好。
Markdown的高级语法也不必强求,开心就好。
对
\LaTeX
{}
和Word的支持
\text
{
\color
{
red
}
在Project1中
}
不做要求,但请在自己的项目中留好接口,方便完成潜在的后续要求。
\end{note}
\end{document}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment