Typora 应用教程:一文搞定

By RudyHwang, NJCIT, 2024.4

什么是 Markdown

Markdown 是用来编写结构化文档的一种纯文本格式,目标是让我们在双手不离开键盘的情况下,可以对文本进行一定程度的格式排版。

Markdown 既是一套标记语法,这些标记字符就是用来赋予文字不同格式,也能将标记字符进行转换,最终呈现出我们想要的排版效果。能编辑 Markdown 的软件,就叫 Markdown 编辑器。

可简要看一下 Markdown 语法参考:https://commonmark.org/help/
在这里插入图片描述

什么是 Typora

Typora 是一款支持实时预览的 Markdown 文本编辑器。

Typora 区别于其它 Markdown 文本编辑器的地方就是实时预览,Markdown 语法的标记都在实时预览中消去了(可以通过文档左下方的</>在源码与效果间进行切换)。结合一些常用快捷键即可快速编排文档,对格式和图像的处理较为友好。

*注:WPS软件也已经支持 Markdown 了,依次选择“新建->新建智能文档->空白智能文档”(也有很多模板),而且会自动添加成云文档。

在这里插入图片描述

版本

Typora 在进入到 1.x 版本后开始收费了,本文档所用版本为:Typora_1.3.8_windows ,自己找找吧。

快速上手:几个常用快捷键

文本格式编辑段落格式编辑视图切换(可忽略)文件系统操作(可忽略)
Ctrl + 1~6 :插入标题Ctrl + Shift + X :任务列表ctrl + shift + L :侧边栏显示/隐藏Ctrl + S 保存
Ctrl + B :加粗Ctrl + Shift + [ :有序列表
可用:x. 空格
Ctrl + Shift + 1 :侧边栏大纲视图Ctrl + F 查找文件
Ctrl + I :斜体Ctrl + Shift + ] :无序列表
可用:- 空格
Ctrl + Shift + 2 :侧边栏文件视图Ctrl + H 查找内容替换
Ctrl + U :下划线Ctrl + T :创建表格
可用:右键->插入
F9 :打字机模式切换Ctrl + HOME 移动到文件头
Ctrl + Shift + K :插入代码块
可用:右键->插入
F8 :专注模式切换Ctrl + END 移动到文件末尾

*注:掌握上表左边一半就能快速编辑了,拓展程度取决于个人兴趣和习惯。另附两个概念:

  • 打字机模式——使得你所编辑的那一行永远处于屏幕正中

  • 专注模式——使你正在编辑的那一行保留颜色,而其他行的字体呈灰色

Typora 偏好设置

新建文件后,应先进行保存(会方便为保存图像指明路径,详见后面3.4节)。

打开“文件->偏好设置”。

通用

由于使用的是破解版,因此不要自动检查更新。

在这里插入图片描述

外观

通过“获取主题”可以下载其它主题,并在“主题”中进行选择。

在这里插入图片描述

编辑器

可以设置缩进、自动匹配括号成对、匹配 Markdown。

在这里插入图片描述

图像

建议将图片集中保存到文档所在目录,并且使用相对路径,以防移动文档时不能正常显示图片。

在这里插入图片描述

Markdown

可以根据文档需求调整上下标、高亮、行号、缩进等设置。
在这里插入图片描述

导入导出

导入:

文件、文件夹:文件 --> 打开或打开文件夹。

导出

选择文件 --> 导出,可以选择导出的文件格式。

Typora可以直接导出PDF格式。若要导出Word格式,需要安装插件:pandoc。下载地址:https://github.com/jgm/pandoc/releases

排版格式

标题与段落格式

文档名格式

将文档名设置为独立的格式,以免将文档名纳入一般标题书签目录之中。这里使用了HTML格式。

<div align = "center" style="font-family: 'Microsoft YaHei', '微软雅黑', sans-serif; font-size: 36pt;"> Typora 应用教程 </div>

标题

标题可用“#”表示,总共有6个标题,依次增加#+标题内容,换行即可:

  1. “# 空格 一级标题” 换行 相当于HTML的h1
  2. “## 空格 二级标题” 换行 相当于HTML的h2
  3. “### 空格 三级标题” 换行 相当于HTML的h3
  4. “#### 空格 四级标题” 换行 相当于HTML的h4
  5. “##### 空格 五级标题” 换行 相当于HTML的h5
  6. “###### 空格 六级标题” 换行 相当于HTML的h6

快捷操作:Ctrl+1~6

还可以使用“Ctrl + =”提升标题级别,或者使用“Ctrl + -”降低标题级别。

软件左侧有“大纲 / 文件侧边栏”,Typora 会根据你 Markdown 标记的 H1、H2、H3…… 各级标题为你呈现一个大纲。

段落

从记事本复制过来的文本,换行时默认相当于”Shift+Enter“,即Word中看到的 ⬇️,相当于”回车“(相当于HTML中的<br/>)。

在Typora中直接编辑文本或从Word中复制过来文本时按”Enter“换行默认为”Windows 风格(CR+LF)“,相当于”回车+换行“。

如果在“偏好设置”中选择“首行缩进”,你可以更好地观察到前面两者的区别。

在这里插入图片描述

文本格式

加粗

**文本加粗** :在文本两侧各加两个星,或者使用快捷键:Ctrl + B 。

倾斜

*文本倾斜* :在文本两侧各加一个星,或者快捷键:Ctrl + I 。

下划线

<u> 下划线的内容</u> 或者快捷键Ctrl+U

删除线

~~文本删除线~~ :在文本两侧各加一个星,或者快捷键:Alt + Shift + 5 。

高亮

选择“文件–>偏好设置–>markdown设置”,勾选“高亮”,设置后一定要重新启动软件。
在这里插入图片描述

==文本高亮== :在文本两侧各加一个星,没有对应快捷键。其效果:文本高亮

列表格式

列表存在2行以上时,在第2行之后按Tab键,会形成多级列表,与最近上级列表之间有从属关系。

任务列表

快捷键:Ctrl + Shift + X

  • 列表1 :- [ ] 文字(注意:共有3个空格隔开)

    • 列表3
  • 列表2:·

    • 列表4

上一行格式为:- [X] 文字 (注意:有2个空格隔开)

可以用鼠标点击任务,以切换任务列表是否完成的状态。

无序列表

无序列表可以使用“+ 或 - 或 *”中的任意一个,然后接空格和文字:+/-/* 文字,其效果:

  • 列表1
  • 列表2
    • 列表3

有序列表

有序列表使用数字加点,然后接空格和文字:1. 文本 ,其效果:

  1. 列表1
  2. 列表2
    1. 列表3

表格

在 Markdown 中插入表格比较复杂(不再赘述),一直是一件比较头疼的事情。

Typora 提供了图形界面的插入表格的功能,你只需要在行内 “鼠标右键 - 插入 - 表格” ,输入行数和列数,Typora 就会自动生成一张样式不错的空表格。

快捷键:Ctrl + T 。

图片格式

插入图片

Typora 的图片插入功能是广受好评的,Markdown 原生不太注重图片插入的功能。

在 Typora 中,你可以直接通过Ctrl + CCtrl + V将网络图片、剪贴板图片复制到文档中,也可以直接拖动本地图片到文档中,Typora 会自动帮你插入符合 Markdown 语法的图片语句。

你可以在 ”2.1.4节“ 图像的偏好设置中去设置插入图片时复制到哪个路径,以及什么情况下需要复制。这可以保证即使网络图片源失效了,你还有本地的备份可用,同时也能使你的文档文件夹更合理、完整。

调整图片大小

右击图片可以调整图片大小。

在这里插入图片描述

取消图片居中

本功能不常用。本节取消图片居中针对所有图片,单个图片的处理参考“3.3.3.2节”。在“偏好设置–外观”中“打开主题文件夹”,在对应主题(github)的CSS样式末尾添加CSS样式:

p .md-image:only-child{
    width: auto;
    text-align: left;
}

代码格式

行内代码

`行内代码` :在文本两侧各加一个`(ESC键下方的键)或两个``,对应效果:行内代码

代码块

在行首输入 ``` (ESC键下方的键)后并输入语言名(有补全提示),回车,则生成代码块。如输入”```python “回车之后的效果:

print("Hello")

可在“偏好设置”中设置是否“显示行号”。

开始写代码,Typora 就会自动帮你实现代码(关键字)高亮。Typora 原生支持许多编程语言代码块的语法高亮,基本日常常用的编程语言它都能很好地支持[]:1。当然,你也可以直接换行开始写,而后再选择语言。

其它格式

emoji 表情

可以通过输入 :emoji: 的形式来打出 emoji 对应的单词,软件会自动给出图形的提示,还是比较好用的。比如:horse: 🐴。通过复制也可以,这里有一些表情包合集。

emoji表情:
😀 😃 😄 😁 😆 😅 😂 🤣 😊 😇 🙂 🙃 😉 😌 😍 🥰 😘 😗 😙 😚 😋 😛 😝 😜 🤪 🤨 🧐 🤓 😎 🤩 🥳 😏 😒 😞 😔 😟 😕 🙁 ☹️ 😣 😖 😫 😩 🥺 😢 😭 😤 😠 😡 🤬 🤯 😳 🥵 🥶 😱 😨 😰 😥 😓 🤗 🤔 🤭 🤫 🤥 😶 😐 😑 😬 🙄 😯 😦 😧 😮 😲 🥱 😴 🤤 😪 😵 🤐 🥴 🤢 🤮 🤧 😷 🤒 🤕 🤑 🤠 😈 👿 👹 👺 🤡 💩 👻 💀 ☠️ 👽 👾 🤖 🎃 😺 😸 😹 😻 😼 😽 🙀 😿 😾

emoji手势和人物:
👋 🤚 🖐 ✋ 🖖 👌 🤏 ✌️ 🤞 🤟 🤘 🤙 👈 👉 👆 🖕 👇 ☝️ 👍 👎 ✊ 👊 🤛 🤜 👏 🙌 👐 🤲 🤝 🙏 ✍️ 💅 🤳 💪 🦾 🦵 🦿 🦶 👂 🦻 👃 🧠 🦷 🦴 👀 👁 👅 👄 💋 🩸 👦 👧 👨 👩 👴 👵 👶 👱 👮 👲 👳 👷 👸 💂 🎅 👰 👼 💆 💇 🙍 🙎 🙅 🙆 💁 🙋 🙇 🙌 🙏 👤 👥 🚶 🏃 👯 💃 👫 👬 👭 💏 💑 👪

emoji动植物:
🙈 🙉 🙊 🐵 🐒 🐶 🐕 🐩 🐺 🐱 😺 😸 😹 😻 😼 😽 🙀 😿 😾 🐈🐯 🐅 🐆 🐴 🐎 🐮 🐂 🐃 🐄 🐷 🐖 🐗 🐽🐏 🐑 🐐 🐪 🐫 🐘 🐭 🐁 🐀 🐹 🐰 🐇 🐻 🐨 🐼 🐾 🐔 🐓 🦆 🦢 🦜 🦉 🐣 🐤 🐥 🐦 🐧 🐸 🐊 🐢 🐍 🐲 🐉 🐳 🐋 🐬 🐟 🐠 🐡 🐙 🐚 🐌 🐛 🐜 🐝 🐞 🦋
💐 🌸 💮 🌹 🌺 🌻 🌼 🌷 🌱 🌲 🌳 🌴 🌵 🌾 🌿 🍀 🍁 🍂 🍃 🌍 🌎 🌏 🌐 🌑 🌒 🌓 🌔 🌕 🌖 🌗 🌘 🌙 🌚 🌛 🌜 ☀ 🌝 🌞 ⭐ 🌟 🌠 ☁ ⛅ ☔ ⚡ ❄ 🔥 💧 🌊

插入目录

要在文档内部(通常在文档首部)插入本文档的目录,可以在要插入目录的位置输入[TOC] 即可,软件会自动获取生成目录。

水平分割线

输入***---,按回车键换行。其效果:


超链接

格式:[百度](https://www.baidu.com/)

可选中文本,按快捷键Ctrl+K,填入URL地址即可。其效果:百度

给文本添加超链接:可以先复制链接地址,再选择文本,然后右击选择“超链接”即可。

在这里插入图片描述

公式

使用公式应在“偏好设置”中打开对应的选项,然后重启 Typora 。

在这里插入图片描述

如:$ 2 ^ k $$2^k$2^k^

Typora 原生支持 LaTeX 语法,你可以在 这篇文章 或者 这篇文章 中查看。

特殊处理

字符转义

Markdown语法中有些符号有特定的含义,比如* - + [ $ 等,如果要显示这些特定的符号,需要在前面加上“\”,表示“\”后面的字符正常显示,称之为转义。

如果你的部分符号不能正常显示,可以加上“\”试试。如果你的文档中,有一些代码没有使用代码块格式,最好点击左下方的</>源代码模式,查看并确认代码正常,没有在复制粘贴时被软件添加一些“\”,以免影响代码执行。

标题编号

自动添加标题编号

将后面的代码保存到记事本文件,命名为“base.user.css”,放入以下“打开高级设置”对应的路径:

在这里插入图片描述

h1, h2, h3, h4, strong {
  font-weight: 600;
}

/* 添加自动序号样式 */
#write {
  counter-reset: h1;
}

h1 {
  counter-reset: h2;
}

h2 {
  counter-reset: h3;
}

h3 {
  counter-reset: h4;
}

h4 {
  counter-reset: h5;
}

h5 {
  counter-reset: h6;
}

/** put counter result into headings */
#write h1:before {
    counter-increment: h1;
    content: counter(h1) " "
}

#write h2:before {
  counter-increment: h2;
  content: counter(h1) "." counter(h2) " ";
}

#write h3:before,
h3.md-focus.md-heading:before { /** override the default style for focused headings */
  counter-increment: h3;
  content: counter(h1) "." counter(h2) "."counter(h3) " ";
}

#write h4:before,
h4.md-focus.md-heading:before {
  counter-increment: h4;
  content: counter(h1) "."counter(h2) "."counter(h3) "."counter(h4) " ";
}

#write h5:before,
h5.md-focus.md-heading:before {
  counter-increment: h5;
  content: counter(h1) "."counter(h2) "."counter(h3) "."counter(h4) "."counter(h5) " "
}

#write h6:before,
h6.md-focus.md-heading:before {
  counter-increment: h6;
  content: counter(h1) "."counter(h2) "."counter(h3) "."counter(h4) "."counter(h5) "."counter(h6) " "
}

/** override the default style for focused headings */
#write>h3.md-focus:before,
#write>h4.md-focus:before,
#write>h5.md-focus:before,
#write>h6.md-focus:before,
h3.md-focus:before,
h4.md-focus:before,
h5.md-focus:before,
h6.md-focus:before {
  color: inherit;
  border: inherit;
  border-radius: inherit;
  position: inherit;
  left: initial;
  float: none;
  top: initial;
  font-size: inherit;
  padding-left: inherit;
  padding-right: inherit;
  vertical-align: inherit;
  font-weight: inherit;
  line-height: inherit;
}

/* 调整页边距 */
@page {
    margin: 8mm 0mm;
}
/* 自定义强制换号符,使得在导出PDF 或打印时强制换行 */
@media print {

  /* 这是自定义标签, 在需要换行的地方插入:<pb> */
  pb {
    display: block;
    page-break-after: always;
  }

  h1 {
    page-break-before: always;
  }

  h1:first-of-type {
    page-break-before: avoid;
  }
}

/* 完成的 Task 添加删除线 */
.task-list-done {
  text-decoration: line-through;
  color: #777;
}

.task-list-not-done {}

/* 添加键盘样式 */
kbd {
  box-shadow: inset 0 -2px 0 #c6cbd1;
  background-color: white;
}

/* TOC 中隐藏 H1 和 H6 */
/* .md-toc-h1, .md-toc-h6 { */
  /* display: none; */
/* } */

/* 添加 TOC 自动序号样式 */
.md-toc-content {
  counter-reset: toc-h1;
}

.md-toc-h1 {
  counter-reset: toc-h2;
}

.md-toc-h2 {
  counter-reset: toc-h3;
}

.md-toc-h3 {
  counter-reset: toc-h4;
}

.md-toc-h4 {
  counter-reset: toc-h5;
}

.md-toc-h5 {
  counter-reset: toc-h6;
}

.md-toc-content .md-toc-h1 a:before {
  counter-increment: toc-h1;
  content: counter(toc-h1) " ";
}

.md-toc-content .md-toc-h2 a:before {
  counter-increment: toc-h2;
  content: counter(toc-h1) "." counter(toc-h2) " ";
}

.md-toc-content .md-toc-h3 a:before {
  counter-increment: toc-h3;
  content: counter(toc-h1) "." counter(toc-h2) "." counter(toc-h3) " ";
}

.md-toc-content .md-toc-h4 a:before {
  counter-increment: toc-h4;
  content: counter(toc-h1) "." counter(toc-h2) "." counter(toc-h3) "." counter(toc-h4) " ";
}

.md-toc-content .md-toc-h5 a:before {
  counter-increment: toc-h5;
  content: counter(toc-h1) "." counter(toc-h2) "." counter(toc-h3) "." counter(toc-h4) "." counter(toc-h5) " ";
}

.md-toc-content .md-toc-h6 a:before {
  counter-increment: toc-h6;
  content: counter(toc-h1) "." counter(toc-h2) "." counter(toc-h3) "." counter(toc-h4) "." counter(toc-h5) "."counter(toc-h6) " ";
}

/* 侧边栏自动编号 */
.outline-content {
  counter-reset: outline-h1;
}

.outline-h1 {
  counter-reset: outline-h2;
}

.outline-h2 {
  counter-reset: outline-h3;
}

.outline-h3 {
  counter-reset: outline-h4;
}

.outline-h4 {
  counter-reset: outline-h5;
}

.outline-h5 {
  counter-reset: outline-h6;
}

.outline-content .outline-h1 .outline-label:before {
  counter-increment: outline-h1;
  content: counter(outline-h1) " ";
}

.outline-content .outline-h2 .outline-label:before {
  counter-increment: outline-h2;
  content: counter(outline-h1) "."counter(outline-h2) " ";
}

.outline-content .outline-h3 .outline-label:before {
  counter-increment: outline-h3;
  content: counter(outline-h1) "."counter(outline-h2) "."counter(outline-h3) " ";
}

.outline-content .outline-h4 .outline-label:before {
  counter-increment: outline-h4;
  content: counter(outline-h1) "."counter(outline-h2) "."counter(outline-h3) "."counter(outline-h4) " ";
}

.outline-content .outline-h5 .outline-label:before {
  counter-increment: outline-h5;
  content: counter(outline-h1) "."counter(outline-h2) "."counter(outline-h3) "."counter(outline-h4) "."counter(outline-h5) " ";
}

.outline-content .outline-h6 .outline-label:before {
  counter-increment: outline-h6;
  content: counter(outline-h1) "."counter(outline-h2) "."counter(outline-h3) "."counter(outline-h4) "."counter(outline-h5) "."counter(outline-h6) " ";
}

其效果:

在这里插入图片描述

添加PDF书签编号

尽管上一节在 Typora 大纲中显示了章节标题编号,但导出的 PDF 书签中并没有自动添加编号,如:
在这里插入图片描述

此处引用一个 Python 解决方案,将代码保存成”.py“文件。其中用到了“PyPDF2”模块,在DOS命令行或其它软件控制台终端里运行命令pip install PyPDF2安装此模块,然后按代码前三行说明运行即可。

# 使用方法:
#     方法1:将本文档入文件同目录,在“第10行”填上文件名,运行即可
#     方法2:本文档可以放在任何位置,要转换的文档使用绝对路径,用第12行替换前两行
#       原作者博客地址:https://blog.csdn.net/as604049322

import os
from PyPDF2 import PdfReader, PdfWriter

# 为文件名或路径填写方便,故把以下三行从main起始处提前到此处
relative_path = '替换文档名.pdf'
file = os.path.join(os.path.dirname(__file__), relative_path)
#file = r"D:\。。。\FileName.pdf" #文档绝对路径亦可用,替换上面代码+relative_path = 'Python单词汇总.pdf'

def get_pdf_Bookmark(filename):
    if isinstance(filename, str):
        pdf_reader = PdfReader(filename)
    else:
        pdf_reader = filename
    pagecount = len(pdf_reader.pages)
    # 用保存每个标题id所对应的页码
    idnum2pagenum = {}
    for i in range(pagecount):
        page = pdf_reader.pages[i]
        idnum2pagenum[page.indirect_ref.idnum] = i
    # 保存每个标题对应的标签数据,包括层级,标题和页码索引(页码-1)
    bookmark = []

    def get_pdf_Bookmark_inter(outlines, tab=0):
        for outline in outlines:
            if isinstance(outline, list):
                get_pdf_Bookmark_inter(outline, tab + 1)
            else:
                bookmark.append(
                    (tab, outline['/Title'], idnum2pagenum[outline.page.idnum]))

    get_pdf_Bookmark_inter(pdf_reader.outline)
    return bookmark


def pdf_write_bookmark(bookmark, pdf_file, compress=True):
    pdf_reader = PdfReader(pdf_file)
    num_pages = len(pdf_reader.pages)
    pdf_writer = PdfWriter()
    for page in pdf_reader.pages:
        if compress:
            page.compress_content_streams()
        pdf_writer.add_page(page)
    # pdf_reader.
    last_cache = [None] * (max(bookmark, key=lambda x: x[0])[0] + 1)
    for tab, title, pagenum in bookmark:
        if pagenum >= num_pages:
            continue
        parent = last_cache[tab - 1] if tab > 0 else None
        indirect_id = pdf_writer.add_outline_item(title, pagenum, parent=parent)
        last_cache[tab] = indirect_id
    pdf_writer.page_mode = "/UseOutlines"
    with open(pdf_file, "wb") as out:
        pdf_writer.write(out)
    print("已成功将书签添加到:", pdf_file)


if __name__ == '__main__':        
    bookmark = get_pdf_Bookmark(file)
    num_cache = [0] * 7
    last_tab = 0
    new_bookmark = []
    for tab, title, pagenum in bookmark:
        if tab > last_tab:
            num_cache[tab] = 1
        else:
            num_cache[tab] += 1
        new_title = title
        if not title[0].isdigit():
            new_title = ".".join(map(str, num_cache[:tab + 1])) + " " + title
        # print(tab, new_title, pagenum)
        new_bookmark.append((tab, new_title, pagenum))
        last_tab = tab
    pdf_write_bookmark(new_bookmark, file)

文档运行结果如:

在这里插入图片描述

转换后的效果:
在这里插入图片描述

Typora 中的前端技术

有以下两点需要说明:

  1. Typora是一个轻量级简明Markdown笔记软件,没有必要搞得太复杂。

  2. Typora基于HTML和JavaScript,因此,如果了解前端开发技术可以对此软件玩得更加炫酷。比如下面三点就是体现。

伪装成文本编辑器的浏览器

Typora 的很多元素符合网页前端常用的HTML 和 JavaScript语法风格。尤其是当你按下 Shift + F12 快捷键时,页面会弹出一个基于 Chrome 的开发者工具栏,也就是我们在浏览器中常说的「审查元素」。

我们在用 Markdown 语言撰写文稿的时候,其实本质上是在借助某种编程语言的转化(解析器)来编写一个 HTML 网页。Markdown 从它诞生之初就与 Web 技术有着及其紧密的联系。

文本居中

文本居中通过HTML、div标签或CSS实现,align对齐参数可以是“left|right|center|justify”。

<div align = "center">文本居中的方法</div>
<div align = "center" style="font-size: 48pt;">文本</div>
<div align = "center" style="font-family: 'Microsoft YaHei', '微软雅黑', sans-serif; font-size: 48pt;"> 文本 </div>

我个人会用最后一行作为整个文档的大标题,不被纳入目录中。

其对应效果:

文本居中的方法
文本
文本

另外,增加H标签和align属性也是可以的,如<h1 align = "center">文本居中</h1>,但是注意,它会纳入同级标题的数量之中。

再者,图片也可以在其引用链接上增加 align 属性来控制其显示位置。

Typora 主题

Typora 有很多主题样式,可以在”文件->偏好设置->外观“中点击右下角的”获取主题“得到。

将下载的主题解压,放到“Typora\themes”文件夹里即可。主题可以在“偏好设置”或菜单栏里更换。

在这里插入图片描述

参考:https://blog.csdn.net/yexiangcsdn/article/details/116525571

引用

文本引用

> 引用文本 注意:有1个空格隔开)。标志效果如左侧所示,另引用文本颜色区别于正文。

链接引用

链接引用类似于我们常在论文末尾看到的「参考文献」的写法。不同于超链接:[文献3](www.baidu.com )

链接引用包括两个部分:

  1. 链接引用格式:[百度][1],即 百度

  2. 通过 []: 的语法来为你的文档加上链接引用(常在文末添加),如:

脚注

脚注也很常见,即某段文字末的右上角标有数字标记,页面底部进行注释的写法。在Typora中,文档可以看作只有一页,脚注的效果近乎尾注,导出PDF也会出现在最后。

脚注包括两个部分:

  1. 你可以在需要插入脚注标号的位置写[^number],如:文献1 、文献2
  2. 在下方通过 [^ number ]: 在文档中插入脚注

效果如下:

在这里插入图片描述

后记:好看的主题

操作:

  • 下载新主题:https://theme.typora.io/

  • 打开Typora,选择“偏好设置 > 外观 > 打开主题文件夹”,将下载解压的.css和相应的文件夹复制到该文件夹中

  • 重启Typora,然后选择主题 > Forest,即可在“主题”菜单中切换。

其中,Github、Vue、Forest 适合导出PDF (Newsprint 等主题对HTML有时排版不好)。

Drake

4.8MB,有12个模板,不错!https://theme.typora.io/theme/Drake/

这几个还可以:drake,drake-vue,drake-light,drake-material

在这里插入图片描述

Solarized

182KB,有点古纸风
在这里插入图片描述

Vue

264KB,风格比较清新

在这里插入图片描述

Forest

70.2MB,太大,深浅色的交替,风格还可以

在这里插入图片描述

OVER!

参考文献(脚注示例)

附:CSS 和 Python 代码的原创作者看到的话请联系,以便附上链接。


  1. www.baidu.com ↩ ↩︎

  2. 张三. 人民邮电出版社 ↩︎

  • 21
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Yolov5 是一种广泛应用于目标检测的算法,其 loss 原理相对简单。Yolov5 通过将目标检测问题转化为一个回归问题,通过预测 bounding box 的坐标来实现目标检测。 Yolov5 的 loss 主要包括三个部分:分类损失、定位损失和目标置信度损失。 分类损失是用来衡量预测的类别与真实类别之间的差异。Yolov5 使用交叉熵损失函数来计算分类损失。对于每个边界框(bounding box),它将计算预测类别的 softmax 概率与真实类别的 one-hot 向量之间的交叉熵。 定位损失用于衡量预测的边界框位置与真实边界框位置之间的差异。Yolov5 使用 Smooth L1 损失函数来计算定位损失。它通过对预测边界框的坐标与真实边界框的坐标之间进行平滑处理,减小了异常值的影响。 目标置信度损失用于衡量预测的边界框与真实边界框之间的 IoU(Intersection over Union)之间的差异。Yolov5 使用 Binary Cross-Entropy 损失函数来计算目标置信度损失。它将预测的边界框是否包含目标与真实边界框是否包含目标之间的差异进行衡量。 最终,Yolov5 的总损失是通过将三个部分的损失加权求和得到的。这些权重可以根据具体的任务和数据集进行调整。 通过最小化 Yolov5 的 loss 函数,模型可以学习到更准确的目标检测结果。这样,我们就可以在图像中准确地检测和定位不同类别的目标。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rudyhwang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值