Commit 8e83663c authored by 魔法少女赵志辉's avatar 魔法少女赵志辉 🍊
Browse files

Update description.

parent 46e7c165
......@@ -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}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment