Jack Huang's Blog


  • 首页

  • 标签

  • 归档

  • 搜索

Hexo构建静态博客方法

发表于 2020-04-18

一直使用Hexo+Github构建静态博客,可突然在使用hexo g -d命令时出故障了,问题如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
INFO  [hexo-math] Using engine 'mathjax'
INFO Start processing
FATAL Something's wrong. Maybe you can find the solution here: http://hexo.io/docs/troubleshooting.html
Template render error: expected variable end
at Object._prettifyError (F:\blog\node_modules\nunjucks\src\lib.js:35:11)
at Template.render (F:\blog\node_modules\nunjucks\src\environment.js:526:21)
at Environment.renderString (F:\blog\node_modules\nunjucks\src\environment.js:364:17)
at Promise.fromCallback.cb (F:\blog\node_modules\hexo\lib\extend\tag.js:62:48)
at tryCatcher (F:\blog\node_modules\bluebird\js\release\util.js:16:23)
at Function.Promise.fromNode.Promise.fromCallback (F:\blog\node_modules\bluebird\js\release\promise.js:180:30)
at Tag.render (F:\blog\node_modules\hexo\lib\extend\tag.js:62:18)
at Object.onRenderEnd (F:\blog\node_modules\hexo\lib\hexo\post.js:282:20)
at Promise.then.then.result (F:\blog\node_modules\hexo\lib\hexo\render.js:65:19)
at tryCatcher (F:\blog\node_modules\bluebird\js\release\util.js:16:23)
at Promise._settlePromiseFromHandler (F:\blog\node_modules\bluebird\js\release\promise.js:512:31)
at Promise._settlePromise (F:\blog\node_modules\bluebird\js\release\promise.js:569:18)
at Promise._settlePromise0 (F:\blog\node_modules\bluebird\js\release\promise.js:614:10)
at Promise._settlePromises (F:\blog\node_modules\bluebird\js\release\promise.js:693:18)
at Async._drainQueue (F:\blog\node_modules\bluebird\js\release\async.js:133:16)
at Async._drainQueues (F:\blog\node_modules\bluebird\js\release\async.js:143:10)
at Immediate.Async.drainQueues (F:\blog\node_modules\bluebird\js\release\async.js:17:14)
at runCallback (timers.js:705:18)
at tryOnImmediate (timers.js:676:5)
at processImmediate (timers.js:658:5)

不想在费劲的查找问题原因,打算重新走一遍hexo+github构建博客流程,于是记录一下。

Hexo安装

Hexo 是一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。安装Hexo命令如下:

1
2
3
4
5
6
7
8
npm install hexo-cli -g
hexo init blog
cd blog
npm install
hexo server

// Solve ERROR Deployer not found: git
npm install hexo-deployer-git --save

后记

安装最新版本的Hexo之后,发现还是出现文章开始的错误,不过幸运的是,新版本的Hexo给出了错误的位置,经检查是公式输入不对导致解析错误的原因。

参考链接

  1. hexo,by hexo.
  2. 超详细Hexo+Github博客搭建小白教程,by 韦阳.
  3. GitHub+Hexo 搭建个人网站详细教程,by 吴润.
  4. ERROR Deployer not found: git,by hexo.

Simulink用户自定义函数

发表于 2020-04-16 | 更新于 2021-05-19

在使用Simulink建模过程中,发现没有想要的模块,于是只能使用Simulink的自定义函数模块拓展其功能。Simulink自定义函数模块可分成:

  • matlab函数
  • matlab系统
  • Simulink函数
  • S函数
  • 初始化函数
  • 重设函数
  • 终止函数

S函数的类型

  • S函数有多种类型,按照语言分类有M、C、C++、Fortran等编写的;
  • 按照所支持功能多少分类,包括Level1和Level2;
  • 按照执行方式分类,可分为直接解释运行的M S函数和编译为Mex文件后执行的C Mex S函数。

参考链接

  1. User-Defined Functions,by mathwork.
  2. Simulink用得多了,不知道sim()函数你又知多少?,by 尘世落尘.
  3. Simulink仿真入门到精通(十) S函数,by 叮叮当当sunny.

Simulink模型支持可变尺寸信号的方法

发表于 2020-04-14 | 更新于 2021-05-19

使用Simulink建模的过程中,需要输入或输出可变尺寸的信号,具体方法主要有三种:

  • 具有不同输入端口的开关或多端口开关块,具有不同大小的固定大小信号,其输出是一个可变大小的信号。

  • 选择器块和起始和结束索引(端口)索引选项。索引端口信号可以指定输入数据信号的不同子区域,这些子区域在模拟过程中产生可变大小的输出信号。

  • 具有为可变大小信号配置的输出端口的S函数块。输出不仅包括信号的值,还包括信号的维数。

参考链接

  1. Variable-Size Signal Basics,by mathworks.
  2. Inspect Variable-Size Signals on Simulink Models,by mathworks.

Simulink中S函数的使用方法

发表于 2020-04-06 | 更新于 2021-05-19

Simulink是The MathWorks公司开发的用于动态系统和嵌入式系统的多领域模拟和基于模型的设计工具,常集成于MathWorks公司的另一产品MATLAB中与之配合使用。

S-函数是系统函数(System Function)的简称,在Simulink中用非图形化的方式来描述一个模块。一个完整的S-函数结构体系包含了描述一个动态系统所需要的全部能力。使用S-函数用户可以向Simulink模型中添加自己的模块,可以自由选择使用MATLAB、C、C++等语言来创建自己的模块。

编写S函数

编写S函数,可以从 Matlab 给的模板S函数文件开始,用户可以在 Matlab 命令窗口中键入:

1
edit sfuntmpl

该模板S函数文件包含了所有的S函数的例程, 包含1个主函数和6个子函数。 在主函数程序使用一个多分支语句 (Switch-case)根据标志将执行流程转移到相应的例程函数。主函数的参数 Flag 标志值是由系统(Simulink 引擎)调用时给出的。

问题处理

参考链接

  1. Simulink之——S函数,by 只是学电的.
  2. 使用level2 M S函数时,设置了0输入就会报错,测试程序见贴,by yfspring.
  3. MATLAB / SIMULINK通信系统建模与仿真实例分析,by 邵玉斌.
  4. Level2-S-function,by auto6329.

飞行仿真中气动参数的生成和计算方法

发表于 2020-04-03 | 更新于 2020-07-26

飞行器仿真一个难点是气动力和力矩系数的生成和计算方法。通常获得气动力和力矩系统的方法主要有:

  • 风洞实验。能够获得精准的气动力和力矩系数,但投资巨大。
  • Fluent类似软件进行仿真计算。
  • Datcom生成。Datacom软件本质是在大量风洞实验数据基础上,通过数值计算粗略生成气动力和力矩系数。

气动力模型是表征气动力和力矩系数与飞行状态、控制输入之间关系的函数。可表示为:

$$C_i=f(H, Ma, α, β, \omega_x, \omega_y,\omega_z, \delta_e,\delta_r,\delta_a)$$

其中,H、Ma、α、β分别为高度、马赫数、攻角、侧滑角;$\omega_x, \omega_y,\omega_z$ 分别为滚转、偏航和俯仰角速度;$\delta_e,\delta_r,\delta_a$ 分别为升降舵、方向舵和副翼舵偏角。

Datcom+使用帮助

Datcom+是Digital Datcom程序的一个扩展,它包含了一些工具,使使用Digital Datcom程序更加容易。这一计划的起源始于1996年,并由Holy Cows,Inc.支持到2010年。

Datcom+Pro是Datcom+的下一代,它已经变得更加用户友好。可视化工具允许您立即看到您的飞机,由数字数据通信程序生成的系数数据绘制在X-Y图上,以便于解释和包含在报告中。此外,您的Datcom+模型现在可以在JSBSim中运行,它是一个完整的6自由度运动方程模型,并提供了执行标准飞行试验机动的飞行试验脚本示例。可惜无法网上无法获得该版本。

下面重点介绍Datcom+的使用方法。

Datcom+输入

Datcom+输入是以“.dcm”为扩展名的文件,具体数据输入格式可参考示例文件“citation.dcm”。该示例文件的设计目的是允许您读取它,并可能理解它,即使Datcom符号可能很难读取和理解。它由以“*”开头的注释行和Datcom命令组成,其中一些命令必须以列1开头,另一些命令以$开头,后跟公共块名,如FLTCON。如果以$开头,则必须以$结尾。常用的名字列表如下:

  • FLTCON-定义飞行条件

  • SYNTHS-定位cg、机翼、水平尾翼和垂直尾翼相对于参考线

  • BODY-定义机体几何体

  • WGPLNF-定义机翼平面形状几何图形

  • HTPLNF-定义水平尾翼几何结构

  • VTPLNF-定义垂直尾翼几何结构

MiG-17 Datcom+ 输入示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
CASEID ----- MIKOYAN-GUREVICH MiG-17 ----- 
$FLTCON NMACH=1.0,MACH(1)=0.6,NALPHA=10.0,ALSCHD(1)=-4.0,-2.0,
0.0,2.0,4.0,6.0,8.0,10.0,12.0,14.0,NALT=1.0,ALT(1)=5000.0,
WT=13395.0,LOOP=1.$
$SYNTHS XCG=11.17,ZCG=0.0,XW=3.63,ZW=0.42,ALIW=1.0,XH=28.73,
ZH=5.24,ALIH=0.0,XV=18.3,ZV=0.0$
$OPTINS SREF=243.0$
$BODY NX=8.0,
X(1)=0.0,0.74,8.35,13.14,19.35,24.41,28.41,30.77,
S(1)=5.19,9.32,16.89,16.89,15.94,11.12,5.85,2.5$
NACA-W-6-66-012
$WGPLNF CHRDTP=7.02,SSPNOP=11.32,SSPNE=13.41,SSPN=15.71,
CHRDBP=8.4,CHRDR=14.0,SAVSI=45.0,SAVSO=45.0,CHSTAT=0.25,
TWISTA=0.0,DHDADI=-3.0,DHDADO=-3.0,TYPE=1.0$
NACA-H-6-66-009
$HTPLNF CHRDTP=1.86,SSPNE=5.42,SSPN=5.43,CHRDR=4.69,SAVSI=45.0,
CHSTAT=0.25,TYPE=1.0$
NACA-V-6-66-009
$VTPLNF CHRDTP=3.76,SSPNE=6.05,SSPN=8.18,CHRDR=12.47,SAVSI=55.0,
CHSTAT=0.25,TYPE=1.0$
DIM FT
BUILD
PLOT
NEXT CASE

F16输入示例

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
DIM FT
DAMP
DERIV DEG
PART

$FLTCON NMACH=1.0,MACH(1)=0.6,
NALPHA=10.0,ALSCHD(1)=-4.0,-2.0,0.0,2.0,4.0,6.0,8.0,10.0,12.0,14.0,
NALT=1.0,ALT(1)=5000.0,
WT=17400.0,LOOP=2.$
$OPTINS SREF=300.0,BLREF=30.0$
$SYNTHS XCG=27.60,ZCG=0.0,
XW=19.63,ZW=0.69,ALIW=0.0,
XH=35.10,ZH=0.69,ALIH=0.0,
XV=33.86,ZV=0.0$
$BODY NX=7.0,
X(1)= 0.00, 2.52,15.51,16.76,24.95,41.83,42.75,
R(1)= 0.07, 0.13, 3.19, 3.15, 2.54, 1.80, 1.64,
ITYPE=1.0, METHOD=1.0$
NACA-W-6-4A-204
$WGPLNF CHRDR=15.30, CHRDTP=3.6,
SSPNE=12.69, SSPN=14.79,
SAVSI=45.0,
CHSTAT=0.0, TWISTA=0.0,
DHDADI=-1.5,
TYPE=1.0$

NACA-F-4-0012
$SYMFLP FTYPE=2.0, NDELTA=9.0,
DELTA(1)=0.0,5.0,10.0,15.0,20.0,25.0,30.0,35.0,40.0,
PHETE=0.0522, PHETEP=0.0391,
CHRDFI=2.40, CHRDFO=1.30,
SPANFI=3.50, SPANFO=12.00,
NTYPE=1.0$
CASEID FLAPS: ----- General Dynamics F-16A Block 15(+) -----
SAVE
NEXT CASE

$ASYFLP STYPE=4.0, NDELTA=9.0,
DELTAL(1)=-32.0,-20.0,-10.0,-5.0, 0.0, 5.0, 10.0, 20.0, 32.0,
DELTAR(1)= 32.0, 20.0, 10.0, 5.0, 0.0,-5.0,-10.0,-20.0,-32.0,
SPANFI=12.05, SPANFO=14.79,
PHETE=0.05228,
CHRDFI=1.35, CHRDFO=0.74$
CASEID AILERONS: ----- General Dynamics F-16A Block 15(+) -----
SAVE
NEXT CASE

NACA-H-4-0010
$HTPLNF CHRDR=9.91, CHRDTP=2.62,
SSPNE=5.77, SSPN=9.25,
SAVSI=40.0,
CHSTAT=0.0,
DHDADI=-15.0,
TYPE=1.0$
$SYMFLP FTYPE=5.0, NDELTA=9.0,
DELTA(1)=-32.0,-20.0,-10.0,-5.0, 0.0, 5.0, 10.0, 20.0, 32.0,
PHETE=0.0522, PHETEP=0.0391,
CHRDFI=7.42, CHRDFO=2.62,
SPANFI=3.65, SPANFO=9.25,
NTYPE=1.0$

NACA-V-4-0012
$VTPLNF CHRDR=9.64, CHRDTP=3.80,
SSPNE=8.59, SSPN=10.53,
SAVSI=45.0,
CHSTAT=0.0,
TYPE=1.0$

SAVE
CASEID TOTAL: ----- General Dynamics F-16A Block 15(+) -----

AIM-9输入示例

在Missile Datcom的for005.dat文件中输入如下内容:

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
$FLTCON 
NALPHA=5.00000,
ALPHA=-8.0000,-4.0000,0.0000,4.0000,8.0000,
NMACH=4.00000,
MACH=0.5000,1.5000,2.5000,3.5000,
ALT=5000.0000,$
$REFQ
XCG=1.5000,$
$AXIBOD
TNOSE=CONICAL,
LNOSE=0.28000,
DNOSE=0.13000,
LCENTR=2.69000,
DCENTR=0.13000,$
$FINSET1
SECTYP=NACA,
SSPAN=0.0650,0.2900,
CHORD=0.3000,0.0000,
CFOC=0.2000,0.0000,
XLE=0.2800,0.5700,
NPANEL=4.00000,
PHIF=45.0000,135.0000,225.0000,315.0000,$
$FINSET2
SECTYP=NACA,
SSPAN=0.0650,0.2900,
CHORD=0.6600,0.4600,
XLE=2.2200,2.8800,
NPANEL=4.00000,
PHIF=45.0000,135.0000,225.0000,315.0000,$
NACA-1-6-64-005
NACA-2-4-2204-04
DAMP
PART
PLOT
PRESSURES
SAVE
DIM M
DERIV DEG
CASEID AIM-9
NEXT CASE
CASEID PANEL DEFLECTION
$DEFLCT DELTA1=-5.0,5.0,5.0,-5.0$
SAVE
NEXT CASE
$DEFLCT DELTA1=5.0,-5.0,-5.0,5.0$
SAVE
NEXT CASE
$DEFLCT DELTA1=-10.0,10.0,10.0,-10.0$
SAVE
NEXT CASE
$DEFLCT DELTA1=10.0,-10.0,-10.0,10.0$
SAVE
NEXT CASE

Matlab导入Datcom输出文件

Matlab使用datcomimport函数导入Datcom输出文件数据到工作空间,有可能会出现如下所示警告:

1
2
3
4
> In usafdatcom
In usafdatcom
In datcomimport (line 88)
警告: DATCOM file reader state inconsistent

然后会发现导入的启动系数值无法使用。出现该问题的原因主要有:

  • 计算多迎角多高度飞机气动系数时,应设置LOOP为2.0,而非默认的1.0。

参考链接

  1. Missile Datcom,by beihang.
  2. Datcom,by holycows.
  3. DATCOM使用介绍,by wenku.
  4. United States Air Force Stability and Control Digital DATCOM,by wikipedia.
  5. Missile Datcom,by wikipedia.
  6. 操稳特性快速评估及其在飞机设计中的应用,by 张帅.
  7. MISSILE DATCOM使用教程_LIppt课件,by 雅芳.
  8. datcom 计算导弹气动参数,by 一路向北884.

设计模式之状态模式

发表于 2020-03-28 | 更新于 2021-11-20

最近研究红外探测器建模仿真时,了解到它有多种工作状态,在不同工作状态下有不同的探测能力,很适合用设计模式中的状态模式进行建模仿真。因此,学习一下设计模式中行为型模式之状态模式。

定义

在很多情况下,一个对象的行为取决于一个或多个动态变化的属性,这样的属性叫做状态,这样的对象叫做有状态的(stateful)对象,这样的对象状态是从事先定义好的一系列值中取出的。当一个这样的对象与外部事件产生互动时,其内部状态就会改变,从而使得系统的行为也随之发生变化。

在UML中可以使用状态图来描述对象状态的变化。

状态模式(State Pattern) :允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。其别名为状态对象(Objects for States),状态模式是一种对象行为型模式。

有限状态机(英语:finite-state machine,缩写:FSM)又称有限状态自动机(英语:finite-state automation,缩写:FSA),简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学计算模型。

状态存储关于过去的信息,就是说:它反映从系统开始到现在时刻的输入变化。转移指示状态变更,并且用必须满足确使转移发生的条件来描述它。动作是在给定时刻要进行的活动的描述。有多种类型的动作:

  • 进入动作(entry action):在进入状态时进行
  • 退出动作(exit action):在退出状态时进行
  • 输入动作:依赖于当前状态和输入条件进行
  • 转移动作:在进行特定转移时进行

Moore状态机:输出仅仅与当前状态有关;

Mealy状态机:输出不仅取决于当前状态,还和输入有关;

结构

状态模式包含如下角色:

  • Context: 环境类
  • State: 抽象状态类
  • ConcreteState: 具体状态类

参考链接

  1. 软件设计模式简介,by jackhuang.
  2. 图说设计模式-状态模式,by me115.
  3. 有限状态机,by wikipedia.
  4. 理解状态机,by 纸上浅谈.
  5. 深入浅出理解有限状态机,by 我是云峰小罗.
  6. JavaScript与有限状态机,by ruanyifeng.
  7. Moore状态机和Mealy状态机的区别,by Reborn Lee.
  8. C++各类设计模式及实现详解,by linux.

自动控制原理笔记

发表于 2020-03-16 | 更新于 2020-10-11

记录自动控制原理的核心概念、方法。

闭环控制

闭环控制系统

图1 闭环控制系统

图1所示闭环反馈控制系统包括了三种类型的输入信号和一个输出信号$Y(s)$,其中输入信号包括参考输入$R(s)$、干扰信号$T_d(s)$和测量误差$N(s)$。定义偏差信号,即跟踪误差信号为

$$E(s)=R(s)-Y(s) \tag{1}$$

令$H(s)=1$,则图1所示闭环系统的输出$Y(s)$为

$$Y(s)=\frac{G_c(s)G(s)}{1+G_c(s)G(s)}R(s)+\frac{G(s)}{1+G_c(s)G(s)}T_d(s)-\frac{G_c(s)G(s)}{1+G_c(s)G(s)}N(s) \tag{2}$$

将式(1)代入式(2),则跟踪误差信号$E(s)$为

$$E(s)=\frac{1}{1+G_c(s)G(s)}R(s)-\frac{G(s)}{1+G_c(s)G(s)}T_d(s)+\frac{G_c(s)G(s)}{1+G_c(s)G(s)}N(s) \tag{3}$$

定义开环增益$L(s)$为

$$L(s)=G_c(s)G(s) \tag{4}$$

定义灵敏度函数$S(s)$为

$$S(s)=\frac{1}{1+L(s)} \tag{5}$$

定义补灵敏度函数$C(s)$为

$$C(s)=\frac{L(s)}{1+L(s)} \tag{6}$$

初值定理

在数学分析中,初值定理是将时间趋于零时的频域表达式与时域行为建立联系的定理。令

$$F(s)=\int _{0}^{\infty }f(t)e^dt$$

为 $ƒ(t)$ 的(单边)拉普拉斯变换。初值定理表明

$$\lim _{t\to 0}f(t)=\lim _{s\to \infty }{sF(s)}$$

终值定理

在数学分析中,终值定理(Final Value Theorem, FVT)是将时间趋于无穷时的时域表达式与频域行为建立联系的许多定理之一。终值定理允许直接对频域表达式取极限来计算时域行为,无需先转换到时域表达式再取极限。

在数学上,如果

$$\lim _{t\to \infty }f(t)$$

有一个有限极限,那么

$$\lim _{t\to \infty }f(t)=\lim _{s\to 0}{sF(s)}$$

其中 $F(s)$ 为 $f(t)$ 的(单边)拉普拉斯变换。

增益裕度

增益裕度(gain margin, GM)是衡量系统稳定程度的一种方法。

相位裕度

相位裕度(phase margin, PM)是另一种衡量系统稳定程度的方法。

参考链接

  1. 一阶系统和二阶系统,了解一下!!!,by 软软不软.
  2. 终值定理,by wikipedia.
  3. 初值定理,by wikipedia.
  4. 欧拉公式,by wikipedia.
  5. 分部积分法(integration by parts),by 清雅白鹿记.
  6. 如何设计一个运动控制系统,by J Pan.
  7. 如何入门自动控制理论,by J Pan.
  8. 控制器设计怎么做,by 刘扬扬.
  9. 阻尼,by wikipedia.
  10. 相位裕度,by wikipedia.
  11. 波德图,by wikipedia.
  12. 伯德图中的相角裕量和幅值裕量有什么物理意义?,by zhihu.
  13. 现代控制理论线性系统入门(五)设计状态反馈控制器,by zhihu.
  14. simulink怎么用s函数代替微分模块?,by zhihu.
  15. 飞机的纵向增稳是如何实现的,by J Pan.

Matlab_Stateflow_Chart无法初始化向量或数组的解决方法

发表于 2020-03-14

最近在使用Matlab的Stateflow工具箱时,发现无法初始化类型为向量或矩阵的变量。在网上搜索了很久,终于发现类似问题的解决方法,参考链接Why am I unable to initialize the local vector or matrix data in my Stateflow chart?。

具体解决方法是:

  • 定义一个常量,维度与向量变量或矩阵变量一致,设置常量的数值。
  • 使用定义的常量去初始化变量

参考链接

  1. Why am I unable to initialize the local vector or matrix data in my Stateflow chart?,by mathworks.

云时代原生应用架构的思考

发表于 2020-02-28 | 更新于 2020-05-09

参考链接

  1. 什么是Service Mesh,by Kenshin.
  2. 迁移到云原生应用架构,by Jimmy Song.
  3. Kubernetes中文指南/云原生应用架构实践手册,by Jimmy Song.
  4. Serverless(无服务)基础知识,by 高露.

Windows下LaTeX安装及使用

发表于 2020-02-27 | 更新于 2020-02-29

最近准备写大论文,为避免Word格式编排的麻烦,同时能够对大论文进行版本管理,决定使用LaTex。下面记录在Windows平台下安装LaTex的过程及其使用方法。

Tex Live Vs MiKTex Vs proTeXt

TeX(/tɛx/,常被读作/tɛk/,音译“泰赫”,“泰克”,写作“TEX”),是一个由美国计算机教授高德纳(Donald Ervin Knuth)编写的排版软件。TeX的MIME类型为application/x-tex,是一款自由软件。它在学术界特别是数学、物理学和计算机科学界十分流行。TeX被普遍认为是一个优秀的排版工具,尤其是对于复杂数学公式的处理。利用LaTeX等终端软件,TeX就能够排版出精美的文本以帮助人们辨认和查找。

LaTeX(/ˈlɑːtɛx/,常被读作/ˈlɑːtɛk/或/ˈleɪtɛk/,写作“LATEX”),是一种基于TeX的排版系统,由美国计算机科学家莱斯利·兰伯特在20世纪80年代初期开发,利用这种格式系统的处理,即使用户没有排版和程序设计的知识也可以充分发挥由TeX所提供的强大功能,不必一一亲自去设计或校对,能在几天,甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学、物理文档。这个系统同样适用于生成从简单的信件到完整书籍的所有其他种类的文档。

LaTex类似于Linux系统,它有多个发行版,例如 MiKTeX 、 proTeXt 和TeX Live,其中proTeXt是基于MiKTeX打包的。因此重点介绍MiKTex与TeX Live的区别。

Texlive包比较全,Miktex占用空间比较小,遇到需要的包需要在线下载。所以,硬盘空间比较充足的,网络不太方便的电脑,可以选择Texlive,反之硬盘空间小,一直保持网络链接的可以选择Miktex。

LaTeX编辑器

LaTex编辑器大概分为两种,一种为WYSIWYG,所见即所得,实时预览,类似于Word,另一种是纯文本编辑器,有语法高亮,没有预览功能,编译成PDF后才能预览。

LaTeX编辑器的选择请参考有哪些好的 LaTeX 编辑器?。本人倾向于使用VSCode+Latex Workshop,具体方法参考编写中文Latex(VSCode+TexLive)。

VScode使用方法

正向和反向定位跳转

LaTeX Workshop 插件提供了正向和反向定位跳转功能:

  • 在 LaTeX 文件中,按 Ctrl + Alt + J 跳转到对应的 PDF 文件位置。
  • 在 PDF 文件中,按下 Ctrl + 同时鼠标单击,跳转到对应的 LaTeX 文件位置。

Tex Live安装

Tex Live安装请参考最新TeXLive 环境的安装与配置。

LaTeX转docx

有时需要将LaTeX转成docx文档,可使用Pandoc,具体使用方法参考
Latex转word。

LaTeX语法

一个LATEX命令(宏)的格式为:

1
2
3
无参数:     \command
有n个参数: \command{arg1}{arg2}...{argn}
有可选参数: \command[arg_opt]{arg1}{arg2}...{argn}

参考链接

  1. Latex编译器推荐(面向初学者或者懒得折腾的朋友,主要针对windows用户),by 郭令举.
  2. LaTeX的各种发行版和编辑器的比较,by 灵魂机器.
  3. TeX,by wikipedia.
  4. LaTeX,by wikipedia.
  5. 最新TeXLive 环境的安装与配置,by cying.
  6. 有哪些好的 LaTeX 编辑器?,by zhihu.
  7. 编写中文Latex(VSCode+TexLive),by 踏歌.
  8. 一份其实很短的 LaTeX 入门文档,by 始终.
  9. 从零开始 LaTeX 快速入门,by liuchengxu.
  10. 在 LaTeX 中进行文学编程,by 始终.
  11. Latex转word,by yj_isee.
  12. LaTeX + VSCode + Git 开发环境搭建,by 李计芃.
  13. BibTeX,by wikipedia.
  14. 我的 LaTeX 方案实现,by 浪里小涛龙.
上一页1…282930…53下一页

Jack Huang

521 日志
67 标签
© 2025 Jack Huang
由 Hexo 强力驱动
|
主题 — NexT.Muse