CMD说明

CMD说明

CMD字体要求

  • CMD/Powershell对字体要求比较严格

    • 等宽字体
    • 不能为斜体字体
    • 不能有A或C负空间
    • 若是TrueType字体,则必须是FF_MODERN
    • 若不是TrueType字体,则必须是OEM_CHARSET
  • 对于CJK(亚洲字体),还有额外附加条件

    • 若不是TrueType字体,字体名必须是Terminal
    • 若是TrueType字体,必须使用亚洲语言字符集
    • 在字体元信息里声明支持CP936

PowerPoint 技巧

插入元素

插入网页

  • WebView加载项:可以在ppt应用市场中获取

    • 只支持https页面
      • 本地页面都不支持
      • 尝试自建https服务器(自签发证书)失败
    • 可以在编辑状态查看页面效果
    • 在OFFICE2010及以前不可用
  • Microsoft Web Browser控件

    • 调用IE渲染页面,因此网页对IE的兼容性很重要
    • 控件不会自动加载网页,需要通过VB通过触发事件调用其 Navigate2方法加载网页,所以只有在ppt播放页面才能 看到实际效果
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      // 页面切换事件
      // 注意不要`Private Sub`,否则事件不会被触发
      // 若想手动触发可以使用button控件的`CommandButton<X>_Click`事件
      Sub OnSlideShowPageChange()
      Dim FileName As String
      FileName = "<FILENAME>"
      // `WebBrowser1`:控件名称,唯一(单个slide内)标识控件
      // `ActivePresentation.PATH`:当前工作目录(未保存文件返回空),
      // 浏览器默认`http://`协议
      // `Navigate`方法可能会无法加载
      WebBrowser1.Navigate2(ActivePresentation.PATH + "/" + "<FILENAME>")
      End Sub

Excel技巧

EXCEL密码破解

VBAProject密码

  • vbaProject.bin中密码对应字段

    • DPB:当前已存在密码,后跟加密密码值
  • xls:97-03格式表格是RAR格式压缩文件

    • 解压之后再次压缩一般无法正常打开,应该是有特殊的压缩 规则
    • 可以直接用编辑器打开、修改整个文件,但要注意以二进制 格式打开
  • xlsm:07之后带宏表格是ZIP压缩文件

    • 解压之后再次zip打包也无法正常打开,但是zip格式可以 直接替换其中文件,所以可以直接修改单个文件
    • vim对zip格式文件处理类型文件夹,所以使用vim二进制打开 可以修改其中单个文件

修改二进制文件

  • 处理方法:将密码对应字段“无效”

    • 需要保持文件前后大小不改变
    • 密码字段无效化
  • “删除”密码字段

    • DPB字段替换为等长其他名称
      • 密码无法被正常识别
      • 文件大小没有改变,仅字符被替换
    • 再次打开文件,启用宏会报错
      • 不断点击确认之后即可查看vba工程
      • 为vba工程设置新密码,覆盖替换后错误字段,保存 可得已知密码文件
        • 右键VBAProject
        • 工程属性
        • 保护
        • 查看工程属性密码:修改为新密码即可
  • 替换密码字段

    • DPB后密码值替换为其他值
      • 为保证文件大小不变
        • 若新密码较短需要用0填充不足部分
        • 较原始密码长则无需额外操作
    • 打开文件则可以使用已知密码查看vba工程
1
2
3
4
5
6
7
8
9
10
11
 # 二进制打开文件,否则vim会做某些处理,损坏文件
$ vim -b <file>

# 调用xxd转换字符格式为16进制
# 可看到16进制、字符对应格式
# 仅修改左侧16进制有效,修改右侧字符表示不影响文件
# 内容
$ !%xxd

# 16进制转换回原始表示
$ !%xxd -r

VBA脚本穷举密码

  • xls格式:打开VBA编辑器执行代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    '移除VBA编码保护
    Sub MoveProtect()
    Dim FileName As String
    FileName = Application.GetOpenFilename("Excel文件(*.xls & *.xla),*.xls;*.xla", , "VBA破解")
    If FileName = CStr(False) Then
    Exit Sub
    Else
    VBAPassword FileName, False
    End If
    End Sub

    '设置VBA编码保护
    Sub SetProtect()
    Dim FileName As String
    FileName = Application.GetOpenFilename("Excel文件(*.xls & *.xla),*.xls;*.xla", , "VBA破解")
    If FileName = CStr(False) Then
    Exit Sub
    Else
    VBAPassword FileName, True
    End If
    End Sub

    Private Function VBAPassword(FileName As String, Optional Protect As Boolean = False)
    If Dir(FileName) = "" Then
    Exit Function
    Else
    FileCopy FileName, FileName & ".bak"
    End If

    Dim GetData As String * 5
    Open FileName For Binary As #1
    Dim CMGs As Long
    Dim DPBo As Long
    For i = 1 To LOF(1)
    Get #1, i, GetData
    If GetData = "CMG=""" Then CMGs = i
    If GetData = "[Host" Then DPBo = i - 2: Exit For
    Next
    If CMGs = 0 Then
    MsgBox "请先对VBA编码设置一个保护密码...", 32, "提示"
    Exit Function
    End If
    If Protect = False Then
    Dim St As String * 2
    Dim s20 As String * 1
    '取得一个0D0A十六进制字串
    Get #1, CMGs - 2, St
    '取得一个20十六制字串
    Get #1, DPBo + 16, s20
    '替换加密部份机码
    For i = CMGs To DPBo Step 2
    Put #1, i, St
    Next
    '加入不配对符号
    If (DPBo - CMGs) Mod 2 <> 0 Then
    Put #1, DPBo + 1, s20
    End If
    MsgBox "文件解密成功......", 32, "提示"
    Else
    Dim MMs As String * 5
    MMs = "DPB="""
    Put #1, CMGs, MMs
    MsgBox "对文件特殊加密成功......", 32, "提示"
    End If
    Close #1
    End Function

Sheet保护密码

VBA脚本

  • xlsx:打开VBA编辑器执行代码

    1
    2
    3
    4
    5
    6
    7
    Sub pj()
    Dim sht As Worksheet
    For Each sht In Worksheets
    sht.Protect AllowFiltering:=True
    sht.Unprotect
    Next
    End Sub
  • xls:打开VBA编辑器执行代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    Public Sub AllInternalPasswords()
    ' Breaks worksheet and workbook structure passwords. Bob McCormick
    ' probably originator of base code algorithm modified for coverage
    ' of workbook structure / windows passwords and for multiple passwords
    '
    ' Norman Harker and JE McGimpsey 27-Dec-2002 (Version 1.1)
    ' Modified 2003-Apr-04 by JEM: All msgs to constants, and
    ' eliminate one Exit Sub (Version 1.1.1)
    ' Reveals hashed passwords NOT original passwords
    Const DBLSPACE As String = vbNewLine & vbNewLine
    Const AUTHORS As String = DBLSPACE & vbNewLine & _
    "Adapted from Bob McCormick base code by" & _
    "Norman Harker and JE McGimpsey"
    Const HEADER As String = "AllInternalPasswords User Message"
    Const VERSION As String = DBLSPACE & "Version 1.1.1 2003-Apr-04"
    Const REPBACK As String = DBLSPACE & "Please report failure " & _
    "to the microsoft.public.excel.programming newsgroup."
    Const ALLCLEAR As String = DBLSPACE & "The workbook should " & _
    "now be free of all password protection, so make sure you:" & _
    DBLSPACE & "SAVE IT NOW!" & DBLSPACE & "and also" & _
    DBLSPACE & "BACKUP!, BACKUP!!, BACKUP!!!" & _
    DBLSPACE & "Also, remember that the password was " & _
    "put there for a reason. Don't stuff up crucial formulas " & _
    "or data." & DBLSPACE & "Access and use of some data " & _
    "may be an offense. If in doubt, don't."
    Const MSGNOPWORDS1 As String = "There were no passwords on " & _
    "sheets, or workbook structure or windows." & AUTHORS & VERSION
    Const MSGNOPWORDS2 As String = "There was no protection to " & _
    "workbook structure or windows." & DBLSPACE & _
    "Proceeding to unprotect sheets." & AUTHORS & VERSION
    Const MSGTAKETIME As String = "After pressing OK button this " & _
    "will take some time." & DBLSPACE & "Amount of time " & _
    "depends on how many different passwords, the " & _
    "passwords, and your computer's specification." & DBLSPACE & _
    "Just be patient! Make me a coffee!" & AUTHORS & VERSION
    Const MSGPWORDFOUND1 As String = "You had a Worksheet " & _
    "Structure or Windows Password set." & DBLSPACE & _
    "The password found was: " & DBLSPACE & "$$" & DBLSPACE & _
    "Note it down for potential future use in other workbooks by " & _
    "the same person who set this password." & DBLSPACE & _
    "Now to check and clear other passwords." & AUTHORS & VERSION
    Const MSGPWORDFOUND2 As String = "You had a Worksheet " & _
    "password set." & DBLSPACE & "The password found was: " & _
    DBLSPACE & "$$" & DBLSPACE & "Note it down for potential " & _
    "future use in other workbooks by same person who " & _
    "set this password." & DBLSPACE & "Now to check and clear " & _
    "other passwords." & AUTHORS & VERSION
    Const MSGONLYONE As String = "Only structure / windows " & _
    "protected with the password that was just found." & _
    ALLCLEAR & AUTHORS & VERSION & REPBACK
    Dim w1 As Worksheet, w2 As Worksheet
    Dim i As Integer, j As Integer, k As Integer, l As Integer
    Dim m As Integer, n As Integer, i1 As Integer, i2 As Integer
    Dim i3 As Integer, i4 As Integer, i5 As Integer, i6 As Integer
    Dim PWord1 As String
    Dim ShTag As Boolean, WinTag As Boolean

    Application.ScreenUpdating = False
    With ActiveWorkbook
    WinTag = .ProtectStructure Or .ProtectWindows
    End With
    ShTag = False
    For Each w1 In Worksheets
    ShTag = ShTag Or w1.ProtectContents
    Next w1
    If Not ShTag And Not WinTag Then
    MsgBox MSGNOPWORDS1, vbInformation, HEADER
    Exit Sub
    End If
    MsgBox MSGTAKETIME, vbInformation, HEADER
    If Not WinTag Then
    MsgBox MSGNOPWORDS2, vbInformation, HEADER
    Else
    On Error Resume Next
    Do 'dummy do loop
    For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
    For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
    For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
    For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126
    With ActiveWorkbook
    .Unprotect Chr(i) & Chr(j) & Chr(k) & _
    Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _
    Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
    If .ProtectStructure = False And _
    .ProtectWindows = False Then
    PWord1 = Chr(i) & Chr(j) & Chr(k) & Chr(l) & _
    Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
    Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
    MsgBox Application.Substitute(MSGPWORDFOUND1, _
    "$$", PWord1), vbInformation, HEADER
    Exit Do 'Bypass all for...nexts
    End If
    End With
    Next: Next: Next: Next: Next: Next
    Next: Next: Next: Next: Next: Next
    Loop Until True
    On Error GoTo 0
    End If
    If WinTag And Not ShTag Then
    MsgBox MSGONLYONE, vbInformation, HEADER
    Exit Sub
    End If
    On Error Resume Next
    For Each w1 In Worksheets
    'Attempt clearance with PWord1
    w1.Unprotect PWord1
    Next w1
    On Error GoTo 0
    ShTag = False
    For Each w1 In Worksheets
    'Checks for all clear ShTag triggered to 1 if not.
    ShTag = ShTag Or w1.ProtectContents
    Next w1
    If ShTag Then
    For Each w1 In Worksheets
    With w1
    If .ProtectContents Then
    On Error Resume Next
    Do 'Dummy do loop
    For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
    For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
    For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
    For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126
    .Unprotect Chr(i) & Chr(j) & Chr(k) & _
    Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
    Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
    If Not .ProtectContents Then
    PWord1 = Chr(i) & Chr(j) & Chr(k) & Chr(l) & _
    Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
    Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
    MsgBox Application.Substitute(MSGPWORDFOUND2, _
    "$$", PWord1), vbInformation, HEADER
    'leverage finding Pword by trying on other sheets
    For Each w2 In Worksheets
    w2.Unprotect PWord1
    Next w2
    Exit Do 'Bypass all for...nexts
    End If
    Next: Next: Next: Next: Next: Next
    Next: Next: Next: Next: Next: Next
    Loop Until True
    On Error GoTo 0
    End If
    End With
    Next w1
    End If
    MsgBox ALLCLEAR & AUTHORS & VERSION & REPBACK, vbInformation, HEADER
    End Sub

TeX、LaTeX、XeLaTeX

TeX

TeX:由Donald Knuth开发的高质量排版系统

  • TeX的范畴包括标记语法(命令)、具体实现(引擎),在不同 场合含义不同,类似语言、编译器

  • 初版TeX包含300左右命令,随后Donald添加Plain TeX扩展包 定义了600左右常用宏命令

  • TeX中将标记关键字称为命令,其实关键字确实类似命令,可能 系统对应命令、语言对应关键字

TeX宏包

  • *.cls类文件:定义文档结构
  • *.sty包/样式文件:提供类未包括的任何东西
    • 对类文件功能的补充:提供从属于类文件的功能
    • 对类文件功能的修改:改变类文件的风格

基础排版宏包

  • LaTeX:Leslie Lamport设计的更高层次、更抽象的排版格式

    • 包含以TeX命令为基础的一系列高层、抽象宏命令,包括 \section\usepackage
    • 用户可以使用模板而不必决定具体排版、打印,使用更加 方便
    • 是学界事实上的标准排版格式
  • ConTeXt:Pragma-ADE公司设计的文档制造格式

    • 为TeX提供对先进打印特性的易用接口
    • 生成的编译文件更美观,适合专业印刷行业使用
  • TeXinfo:FSF(Free Software Foundation)设计的格式

    • 是Linux系统的标准文档系统

中文排版宏包

  • xeCJK:在XeTeX引擎下处理中日韩文字断行、标点调整、字体 选择的基础性宏包

    • 基础从CCT、CJK以来的标点禁则、标点压缩、NFSS字体补丁
    • 实际上仅对简体中文处理机制比较完全
    • XeTeX本身已经能够大概处理中文文档的排版,但在某些 细节部分仍然可以改进
    • 类似的宏包还有:zhspacing、xCJK、xCCT
  • CTeX:提供了编写中文文档时常用的宏命令

其他宏包

  • AMS-TeX/AMS-LaTeX:AMS(American Mathematical Society) 设计的格式
    • 提供了额外的数学字体、多行数学表述排版

TeX引擎

  • pdfTex:将TeX文本编译输出为pdf格式的引擎实现

    • 最初TeX/LaTeX实现将TeX编译为DVI格式,然后方便转换为 PostScript文件用于打印
    • 而pdf格式超越PostScript格式成为更流行的预打印格式
    • 因此事实上,现在LaTeX发行版中包含4个部分:TeX、 pdfTeX、LaTeX、pdfLaTeX
  • XeTeX:扩展了TeX的字符、字体支持的引擎实现

    • 最初TeX/LaTeX仅仅支持英语数字、字母
    • XeTeX提供了对Unicode字符和TrueType/OpenType字体的 直接支持
  • LuaTeX:将TeX扩展为更sensible的编程语言的实现

TeX发行版

TeX Live

TeX Live:TUG(TeX User Group)发布、维护的TeX系统

  • TeX Live包含
    • 与TeX系统相关的各种程序
      • pdfTeX
      • XeTeX
      • LuaTeX
    • 编辑查看工具
      • DVIOUT DVI Viewer
      • PS View
      • TeXworks
    • 常用宏包
      • LaTeX
    • 常用字体
    • 多个语言支持

MiKTeX

MiKTeX:Christian Schenk开发的在MSWin下运行文字处理系统

CTeX

CTeX:CTeX学会开发,将MiKTeX及常用应用封装

  • 集成WinEdt编辑器
  • 强化了对中文的处理

FireFox常用设置

About

about:config

  • ntl.charset.fallback.utf8_for_file:是否默认以 utf-8 编码打开文件
    • 避免纯文本文件打开乱码

配置文件笔记

Ini

Toml

Yaml

基本语法规则

  • 大小写敏感
  • 缩进代表层级关系
  • 必须空格缩进
    • 不要求空格数目
    • 同层左对齐

数据结构

  • -:?等符号后总是需要空格
  • #表示注释

对象/映射

对象/映射:键值对集合,:表示、{}行内表示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// `:`后要空格
key: value

// 多层级对象
key:
child_key1: val1
child_key2: val2
// 流式表示
key: {child_key1: val1, child_key2: value2}


// 复杂对象格式:键、值都是数组
// `? `(空格)表示复杂key
?
- complex_key1
- complex_key2
// `: `(空格)表示复杂value
:
- complex_val1
- complex_val2

数组

数组:-开头、[]行内表示

1
2
3
4
5
6
7
8
9
10
11
12
13
// `[[ele1, ele2]]`
-
- ele1
- ele2


// `pkey: [{key1: val1}, {key2: val2, key3: val3}]`
pkey:
-
key1: val1
-
key2: val2
key3: val3

标量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
boolean: 
- TRUE # true, True均可
- FALSE # false, False均可

float:
- 3.14
- 3.14e+2 # 科学计数法

int:
- 13
- 0b1010_1010_1010_1010 #二进制

null:
key: ~ # `~`表示null

string:
- 'hello world' # 单、双引号包括特殊字符
- line1
line2 # 字符串可以拆成多行,换行转换为空格

datetime:
- 2019-07-10 # ISO 8601格式,`yyyy-MM-dd`
- 2019-07-10T17:53:23+08:00 # ISO 8601格式,`<date>T<time>+<timezone>`

特殊符号

  • ---:表示文档开始
  • ...:文档结束
    • 二者配合在文件中记录多个yaml配置项
  • !!:强制类型转换
  • >:折叠换行符为空格
  • |:保留换行符
  • &:锚点
    • 不能独立定义,即非列表、映射值
  • *:锚点引用
    • 可以多次引用
    • 被引用值可能会之后被覆盖
  • <<:合并内容
    • 主要配合锚点使用
    • 相当于unlist解构
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
---							# 文档开始
string:
- !!str 13
- !!str true
... # 文档结束

---!!set # 强转为set
- A1: &A1 {x: 1, y: 2} # 定义名称为`A1`锚点
- A2: &A2 {a: 3, b: 4} # 定义名称为`A2`锚点
- B: > # 折叠换行符
this line
will collapse
- C: | # 保留换行符
this paragraph
keeps the <CR>
- D: *A` # 引用名为`SS`的锚点
- E: # E等价于`{x:1, y:2, a:34, b:4}`
<<: [*A1, *A2]
a: 34
...

API

  • Java
    • package:org.yaml.snakeyaml.Yaml
  • Python
    • package:PyYaml
    • import yaml

Xml

二进制文件格式

IDX

IDX:MNIST数据集独创的数据格式

  • 用于存储多维数组

  • 后可以跟数字表示存储数组的维度

    • idx1:存储1维数组
    • idx3:存储3维数组

格式

  • 2bytes:格式版本号

    • 一直是0x0000
  • 1bytes:数组中每个元素的数据类型

    • 0x08unsigned byte
    • 0x09signed byte
    • 0x0Bshort(2bytes)
    • 0x0Cint(4bytes)
    • 0x0Dfloat(4bytes)
    • 0x0Edouble(8bytes)
  • 1bytes:数组维度d

  • d * 4bytes(int):数组各维度长度

  • 数据部分

    • 数据类型已知、长度已知
    • 若元素格式符合文件头要求,表明解析正确,否则文件损坏

Cmd Markdown Reference


我们理解您需要更便捷更高效的工具记录思想,整理笔记、知识,并将其中承载的价值传播给他人,Cmd Markdown 是我们给出的答案 —— 我们为记录思想和分享知识提供更专业的工具。 您可以使用 Cmd Markdown:

  • 整理知识,学习笔记
  • 发布日记,杂文,所见所想
  • 撰写发布技术文稿(代码支持)
  • 撰写发布学术论文(LaTeX 公式支持)

cmd-markdown-logo

除了您现在看到的这个 Cmd Markdown 在线版本,您还可以前往以下网址下载:

Windows/Mac/Linux 全平台客户端

请保留此份 Cmd Markdown 的欢迎稿兼使用说明,如需撰写新稿件,点击顶部工具栏右侧的 新文稿 或者使用快捷键 Ctrl+Alt+N


什么是 Markdown

Markdown 是一种方便记忆、书写的纯文本标记语言,用户可以使用这些标记符号以最小的输入代价生成极富表现力的文档:譬如您正在阅读的这份文档。它使用简单的符号标记不同的标题,分割不同的段落,粗体 或者 斜体 某些文字,更棒的是,它还可以

1. 制作一份待办事宜 Todo 列表

  • [ ] 支持以 PDF 格式导出文稿
  • [ ] 改进 Cmd 渲染算法,使用局部渲染技术提高渲染效率
  • [x] 新增 Todo 列表功能
  • [x] 修复 LaTex 公式渲染问题
  • [x] 新增 LaTex 公式编号功能

2. 书写一个质能守恒公式LaTeX

3. 高亮一段代码code

1
2
3
4
5
6
7
@requires_authorization
class SomeClass:
pass

if __name__ == '__main__':
# A comment
print 'hello world'

4. 高效绘制 流程图

1
2
3
4
5
6
7
8
st=>start: Start
op=>operation: Your Operation
cond=>condition: Yes or No?
e=>end

st->op->cond
cond(yes)->e
cond(no)->op

5. 高效绘制 序列图

1
2
3
Alice->Bob: Hello Bob, how are you?
Note right of Bob: Bob thinks
Bob-->Alice: I am good thanks!

6. 高效绘制 甘特图

1
2
3
4
5
6
7
8
9
10
11
12
13
title 项目开发流程
section 项目确定
需求分析 :a1, 2016-06-22, 3d
可行性报告 :after a1, 5d
概念验证 : 5d
section 项目实施
概要设计 :2016-07-05 , 5d
详细设计 :2016-07-08, 10d
编码 :2016-07-15, 10d
测试 :2016-07-22, 5d
section 发布验收
发布: 2d
验收: 3d

7. 绘制表格

项目 价格 数量
计算机 $1600 5
手机 $12 12
管线 $1 234

8. 更详细语法说明

想要查看更详细的语法说明,可以参考我们准备的 Cmd Markdown 简明语法手册,进阶用户可以参考 Cmd Markdown 高阶语法手册 了解更多高级功能。

总而言之,不同于其它 所见即所得 的编辑器:你只需使用键盘专注于书写文本内容,就可以生成印刷级的排版格式,省却在键盘和工具栏之间来回切换,调整内容和格式的麻烦。Markdown 在流畅的书写和印刷级的阅读体验之间找到了平衡。 目前它已经成为世界上最大的技术分享网站 GitHub 和 技术问答网站 StackOverFlow 的御用书写格式。


什么是 Cmd Markdown

您可以使用很多工具书写 Markdown,但是 Cmd Markdown 是这个星球上我们已知的、最好的 Markdown 工具——没有之一 :)因为深信文字的力量,所以我们和你一样,对流畅书写,分享思想和知识,以及阅读体验有极致的追求,我们把对于这些诉求的回应整合在 Cmd Markdown,并且一次,两次,三次,乃至无数次地提升这个工具的体验,最终将它演化成一个 编辑/发布/阅读 Markdown 的在线平台——您可以在任何地方,任何系统/设备上管理这里的文字。

1. 实时同步预览

我们将 Cmd Markdown 的主界面一分为二,左边为编辑区,右边为预览区,在编辑区的操作会实时地渲染到预览区方便查看最终的版面效果,并且如果你在其中一个区拖动滚动条,我们有一个巧妙的算法把另一个区的滚动条同步到等价的位置,超酷!

2. 编辑工具栏

也许您还是一个 Markdown 语法的新手,在您完全熟悉它之前,我们在 编辑区 的顶部放置了一个如下图所示的工具栏,您可以使用鼠标在工具栏上调整格式,不过我们仍旧鼓励你使用键盘标记格式,提高书写的流畅度。

tool-editor

3. 编辑模式

完全心无旁骛的方式编辑文字:点击 编辑工具栏 最右侧的拉伸按钮或者按下 Ctrl + M,将 Cmd Markdown 切换到独立的编辑模式,这是一个极度简洁的写作环境,所有可能会引起分心的元素都已经被挪除,超清爽!

4. 实时的云端文稿

为了保障数据安全,Cmd Markdown 会将您每一次击键的内容保存至云端,同时在 编辑工具栏 的最右侧提示 已保存 的字样。无需担心浏览器崩溃,机器掉电或者地震,海啸——在编辑的过程中随时关闭浏览器或者机器,下一次回到 Cmd Markdown 的时候继续写作。

5. 离线模式

在网络环境不稳定的情况下记录文字一样很安全!在您写作的时候,如果电脑突然失去网络连接,Cmd Markdown 会智能切换至离线模式,将您后续键入的文字保存在本地,直到网络恢复再将他们传送至云端,即使在网络恢复前关闭浏览器或者电脑,一样没有问题,等到下次开启 Cmd Markdown 的时候,她会提醒您将离线保存的文字传送至云端。简而言之,我们尽最大的努力保障您文字的安全。

6. 管理工具栏

为了便于管理您的文稿,在 预览区 的顶部放置了如下所示的 管理工具栏

tool-manager

通过管理工具栏可以:

</i> 发布:将当前的文稿生成固定链接,在网络上发布,分享 新建:开始撰写一篇新的文稿 </i> 删除:删除当前的文稿 导出:将当前的文稿转化为 Markdown 文本或者 Html 格式,并导出到本地 </i> 列表:所有新增和过往的文稿都可以在这里查看、操作 模式:切换 普通/Vim/Emacs 编辑模式

7. 阅读工具栏

tool-manager

通过 预览区 右上角的 阅读工具栏,可以查看当前文稿的目录并增强阅读体验。

工具栏上的五个图标依次为:

</i> 目录:快速导航当前文稿的目录结构以跳转到感兴趣的段落 视图:互换左边编辑区和右边预览区的位置 </i> 主题:内置了黑白两种模式的主题,试试 黑色主题,超炫! 阅读:心无旁骛的阅读模式提供超一流的阅读体验 全屏:简洁,简洁,再简洁,一个完全沉浸式的写作和阅读环境

8. 阅读模式

阅读工具栏 点击 或者按下 Ctrl+Alt+M 随即进入独立的阅读模式界面,我们在版面渲染上的每一个细节:字体,字号,行间距,前背景色都倾注了大量的时间,努力提升阅读的体验和品质。

9. 标签、分类和搜索

在编辑区任意行首位置输入以下格式的文字可以标签当前文档:

标签: 未分类

标签以后的文稿在【文件列表】(Ctrl+Alt+F)里会按照标签分类,用户可以同时使用键盘或者鼠标浏览查看,或者在【文件列表】的搜索文本框内搜索标题关键字过滤文稿,如下图所示:

file-list

10. 文稿发布和分享

在您使用 Cmd Markdown 记录,创作,整理,阅读文稿的同时,我们不仅希望它是一个有力的工具,更希望您的思想和知识通过这个平台,连同优质的阅读体验,将他们分享给有相同志趣的人,进而鼓励更多的人来到这里记录分享他们的思想和知识,尝试点击 (Ctrl+Alt+P) 发布这份文档给好友吧!


再一次感谢您花费时间阅读这份欢迎稿,点击 (Ctrl+Alt+N) 开始撰写新的文稿吧!祝您在这里记录、阅读、分享愉快!

作者 @ghosert
2016 年 07月 07日

LaTeX. 支持 LaTeX 编辑显示支持,例如:$\sum_{i=1}^n a_i=0$, 访问 MathJax 参考更多使用方法。
code. 代码高亮功能支持包括 Java, Python, JavaScript 在内的,四十一种主流编程语言。

MarkDown Basics


[TOC]

标题

  • Setext形式: 以底线的形式
    • = 表示最高阶标题
    • - 表示次阶标题
  • Atx形式: 在行首插入1-6各#表示1-6阶标题

  • [TOC]可以生成标题链接目录(兼容性不好,不是标准实现)

段落

  • 类似html格式, md忽略文件中的换行符
  • 如果需要新开段落, 手动使用空行(可包含不可见<space> <tab>字符)

区块引用

  • 使用email形式的>标识
  • 可嵌套, 根据层次添加不同数量的>
  • 其中可使用其他形式的语法, 如: 标题, 列表, 代码区块
  • 也可以只给整个”段落”第一行加上>

修辞和强调

  • *_包裹输出为html标签<em>
  • **__包裹则是输出为html标签<strong>
  • ~~包裹输出<del>(删除线)
  • 符号两边如果有空格则会当作普通符号
  • 可以\*, \_转义的方式输出普通符号

列表

  • 无序列表: -, +, *都可以输出无序列表
  • 有序列表: 数字接半角句点.
  • 列表项目标记一般放在最左边, 也可以缩进, 最多3个空格, 项目 标记后面一定要<space><tab>
  • MD其实不关心有序列表中数字的顺序正确性, 只是单纯的输出为 <li>, 如果需要避免将1.类似输出为有序列表, 需要转义 1\.
  • 在列表项目增加空行, 会把列表内容用<p>包裹, 列表 项目可以包含多个段落, 此时列表内段落间也需要空行分隔, 且 项目下所有段落都需要缩进<tab>或4个<space> (这里的段落是指MD意义上的一段, 不是源文件的一段, 即缩进 也只是需要在MD意义上一段的第一行缩进, 当然所有行都缩进 比较美观)
  • 在列表项目内添加引用, >需要缩进, 而代码块本身就需要 缩进, 所以需要缩进2个<tab>或8个<space>

链接

  • 行内形式: 直接在链接内容之后用括号添加链接
       [link_content](link "title(optional)")
    
  • 参考形式: 为链接定义一个名称, 然后可以在其他地方给出地址
       [link_content][id]
       [id]: link "title(optional)"
       [id]: link 'title'
       [id]: link (title)
    

参考形式中

  • 三种定义title的方式都可以
  • id可以包括空格, 不区分大小写
  • 隐式链接标记功能可以省略id, 此时链接标记(id)视为等同 于链接内容

自动链接

  • <link>: 自动转换为链接, 内容就是链接地址
  • <email>: 自动转换为邮箱链接

图片

  • 行内形式: ![alt text](link "title(optional)")
  • 参考形式: ![alt text][id] [id]: link "title(optional)"

代码

  • 段落内代码: 使用`包裹回输出html标签<code>
  • 代码区块
    • 每行缩进<tab>或者4个<space>
    • 3个`包裹, 后面还可以接代码类型, 可能会有代码高亮
1
2
def fn():
print('hello markdown')
def fn():
    print('hello markdown')

表格

  • |: 纵向边界
  • -: 表头和内容边界, 可用于设置对齐
    • :----: 左对齐
    • -----: 默认左对齐
    • :---:: 居中对齐
    • ----:: 右对齐

特殊字符

对于html中特殊字符<(起始标签)和&(标记html实体)会自动 “智能”转义. 如果使用的&字符是html实体字符的一部分, 那么会 保留原状, 否则会转换为&amp

如: 输入©会被保留, 直接显示为copyright字符

分隔线

一行中3个以上的-, *, _可以建立分隔线, 符号之间可以有 空格, 不能有其他东西

其他

  • 注脚: 在注脚文字后接[^footer1]footer1, 然后在其他 地方[^footer1]: 注脚内容