33、格式化命令综合指南

格式化命令综合指南

1. 简介

本文将详细介绍一系列格式化系统相关的命令和宏,涵盖 nroff/troff 的命令行语法、请求、转义序列、预定义数字寄存器、特殊字符,以及 ms mm 宏包、 tbl 预处理器、 eqn 预处理器和 pic 预处理器等内容。

2. nroff/troff 命令行语法

2.1 nroff 命令选项

选项 描述
-cname (仅旧版本 nroff )将 /usr/lib/macros/cmp.n.[dt].name 前缀添加到文件中
-e 使行内单词均匀分布,而非以空格字符的整数倍分布
-h 在大空格中使用制表符
-i 在处理完文件后读取标准输入
-kname (仅旧版本 nroff )将宏压缩并输出到 [dt].name
-mname /usr/lib/tmac/tmac.name 前缀添加到文件中
-nn 将第一页编号设为 n
-olist 仅打印列表中包含的页面,列表中的页面用逗号分隔,范围用 n-m 表示, n- 表示从第 n 页到末尾
-q 调用 .rd 请求的同时输入/输出
-ran 将寄存器 a 的值设为 n
-sn n 页停止一次
-Tname 输出适用于设备类型 name ,具体设备名称见表 B - 1
-un 通过重叠打印 n 次使字符加粗
-2 丢弃除 .tm 请求消息之外的输出

2.2 troff 命令选项

选项 描述
-a 将可打印的 ASCII 近似值发送到标准输出
-b 报告照排机状态(仅 otroff
-cname (仅 otroff )将 /usr/lib/macros/cmp.t.[dt].name 前缀添加到文件中
-f 格式化运行完成时不停止照排机(仅 otroff
-Fdir 使用目录 dir 中的字体表为设备名称格式化输出(仅 ditroff
-i 在处理完文件后读取标准输入
-kname (仅 otroff )将宏压缩并输出到 [dt].name
-mname /usr/lib/tmac/tmac.name 前缀添加到文件中
-nn 将第一页编号设为 n
-olist 仅打印列表中包含的页面,列表中的页面用逗号分隔,范围用 n-m 表示, n- 表示从第 n 页到末尾
-Pn 以点大小 n 打印所有字符,但保留文档中指定大小的动作(仅 otroff
-q 不回显 .rd 请求
-ran 将寄存器 a 的值设为 n
-sn n 页停止一次
-t 将输出发送到标准输出,而非直接发送到照排机(仅 otroff
-Tname 使用 /usr/lib/font/devname 中的设备描述和字体宽度表为设备名称格式化输出(仅 ditroff
-W 如果照排机忙碌,等待其空闲(仅 otroff

2.3 nroff 设备名称表

缩写 用途
37 TELETYPE Model 37 终端( nroff 默认)
450 DASI 450 终端( mm 默认)
tn300 GE TermiNet 300 打印机
300 DASI 300 终端
832 Anderson Jacobson 832 打印机
2631 Hewlett - Packard 2631
4000a Trendata 4000a
8510 C. Itoh 打印机
1P ASCII 行式打印机
X EBCDIC 行式打印机

3. nroff/troff 请求

3.1 常用请求

请求 描述
.ab [text] 中止并将文本作为消息打印。如果未指定文本,则打印 “User Abort” 消息
.ad [c] 如果填充有效,则调整一个或两个边距(见 .fi ), c 可以是: b n (调整左边缘)、 C (居中所有行)、 K (调整右边缘)等
.af rc 为寄存器 r 分配格式 c
.am xx yy 追加到宏 xx ,在调用 yy 时结束追加(默认 yy = ..
.as xx string 追加到字符串 xx
.bd f n 在字体 f 中重叠打印字符 n
.bdfs n 当字体 f 生效时,对特殊字体 s 重叠打印 n
.bp [n] 开始新页面,下一页编号为 n
.br 换行(输出部分行)
.c2 c 设置无中断控制字符为 c (默认 ?
.cf file (仅 ditroff )将文件内容复制到输出中,不进行解释
.cc c 设置控制字符为 c (默认 .
.ce [n] 居中接下来的 n 行;如果 n 为 0,则停止居中(默认 n = 1
.ch xx [n] 更改宏 xx 的陷阱位置为 n 。如果 n 缺失,则移除陷阱
.csfnm 对字体 f 使用 n/36 ems 的恒定字符间距。如果给出 m ,则 em m
.cu [n] 在接下来的 n 行上连续下划线(包括单词间的空格)。如果 n 为 0,则停止下划线。在 troff 中斜体显示(见 .ul
.da [xu] 转移后续文本,将其追加到宏 xx 。如果没有参数,则结束转移
.di [xx] 定义宏 xx ,在 .yy 处结束定义(默认 .yy = .-
.ds xx string 定义 xx 包含字符串
.dt n xx 安装转移陷阱,在位置 n 处调用宏 xx
.ec [c] 设置转义字符为 c (默认 \
.el anything if - else 语句的 else 部分(见 .ie
.em xx 设置结束宏为 xx
.eo 关闭转义字符机制(见 .ec
.ev [n] 更改环境到 n 。如果没有参数,则恢复先前的环境(初始值为 0)
.ex 退出格式化程序
.fc a b 设置字段分隔符为 a ,填充字符为 b

3.2 其他请求

还有许多其他请求,如 .fi (打开填充模式)、 .fl (刷新输出缓冲区)、 .fp n f (将字体 f 分配到位置 n )等,它们各自具有不同的功能,用于控制文本的排版和格式。

mermaid 流程图如下:

graph LR
    A[nroff/troff请求] --> B[常用请求]
    A --> C[其他请求]
    B --> B1[.ab]
    B --> B2[.ad]
    B --> B3[.af]
    C --> C1[.fi]
    C --> C2[.fl]
    C --> C3[.fp]

4. 转义序列

转义序列 描述
\ 防止或延迟对 \ 的解释
\e 当前转义字符的可打印版本
\Y ' (尖音符);等同于 yaa
\y ' (重音符);等同于 yga
\- 当前字体中的减号
\. 句点(点)
\(space) 不可填充的空格大小的空格字符
\O 数字宽度空格
\I 1/6 - em 窄空格字符(在 nroff 中宽度为 0)
\A 1/12 - em 半窄空格字符(在 nroff 中宽度为 0)
\& 非打印的零宽度字符
\! 透明行指示符
\" 注释开始
\SN 插值参数
\% 默认可选连字符
\(xx 名为 xx 的字符
\*x, \*(xu 插值字符串 x xr
\a 用于宏的非解释引导字符
\b 'abc...' 垂直堆叠 abc... 的括号构建函数
\C 中断文本处理
\d 向下 1/2 - em 垂直移动(在 nroff 中为 1/2 行)
\D '1 X,y' (仅 ditroff )从当前位置绘制一条线到坐标 x y
\D 'c d' (仅 ditroff )在当前位置绘制直径为 d 的圆

5. 预定义数字寄存器

5.1 只读寄存器

寄存器 描述
.$ 当前宏级别可用的参数数量
$$ (仅 ditroff troff 进程的进程 ID
.A troff 中,如果使用 -a 选项,则设置为 1;在 nroff 中始终为 1
.H 可用的水平分辨率(基本单位)
.T nroff 中,如果使用 -T 选项,则设置为 1;在 troff 中始终为 0;在 ditroff 中,可以使用字符串 \*(.T 打印 -T 的值
.v 最近使用 \x’N’ 的额外行间距
.a 从当前输入文件读取的行数
.d 当前转移中的当前垂直位置;如果没有转移,则等于 nl
.f 当前字体(物理象限,在 otroff 中为 1 到 4;在 ditroff 中无限制)
.h 当前页面或转移中文本基线的高水位标记
.i 当前缩进
.c 当前调整类型( 0 =. ad1 5 =. adr 等)
.j 当前行长
.l 上一输出行文本部分的长度
.n 当前页面偏移量
.P 当前页面长度
.s 当前点大小
.t 到下一个陷阱的距离
.0 在填充模式下等于 1,在无填充模式下等于 0
.u 当前垂直行间距
.w 前一个字符的宽度
.x 保留的版本相关寄存器
.Y 保留的版本相关寄存器
.z 当前转移的名称

5.2 读写寄存器

寄存器 描述
9- 当前页码
ct 字符类型(由宽度函数设置)
dl 最后完成的转移的宽度(最大值)
dn 最后完成的转移的高度(垂直大小)
dw 当前星期几(1 到 7)
dY 当前月份的日期(1 到 31)
hP 当前输入行上的水平位置
In 输出行号
mo 当前月份(1 到 12)
nl 最后打印文本基线的垂直位置
sb 字符串基线以下的深度(由宽度函数生成)
st 字符串基线以上的高度(由宽度函数生成)
Yr 当前年份的最后两位数字

6. 特殊字符

6.1 标准字体上的特殊字符

字符 描述
闭引号 闭引号
开引号 开引号
3/4 em 破折号 3/4 em 破折号
连字符 连字符
当前字体减号 当前字体中的减号
项目符号 项目符号
正方形 正方形
规则 规则

6.2 特殊字体上的特殊字符

字符 描述
fi fi 连字
fl fl 连字
ff ff 连字
ffi ffi 连字
ffl ffl 连字
t 剑号
@ 脚注标记
0 美分符号
I 注册商标
版权符号 版权符号

6.3 其他杂项字符和数学符号

还有许多杂项字符和数学符号,如 \(sc (节符号)、 \(aa (尖音符)、 \(Pl (数学加号)等,它们在排版中用于表示特定的符号和标记。

7. ms 宏包

7.1 常用 ms 宏

描述
.1c 返回单栏格式
.2c 开始双栏格式
.AB 开始摘要
.AE 结束摘要
.AI name 作者所在机构的名称(用于封面)
.AU name 作者的姓名(用于封面)
.B [text] 以粗体打印文本。如果文本缺失,等同于 .ft 3
.B1 用框包围后续文本
.B2 结束框定文本
.BX word 用框包围单词
.DA 在每页上打印日期
.DS 开始显示文本
.DSB 开始左对齐块,居中显示
.DSC 开始居中显示
.DSL 开始左居中显示
.DE 结束显示文本
.EQ 开始方程
.EN 结束方程
.FS 开始脚注
.FE 结束脚注
.I [text] 以斜体打印文本。如果文本缺失,等同于 .ft 2
.IP label n 用悬挂标签将段落缩进 n 个空格
.KS 开始保留
.KE 保留或浮动保留结束
.KF 开始浮动保留
.LG (仅 troff )将字号增大两点
.LP 开始块段落
.ND 更改或省略日期
.NH n 编号部分标题,级别为 n
.NL 恢复默认字号(仅 troff
.PP 开始缩进段落
.R [text] 以罗马字体打印文本。如果文本缺失,等同于 .ft 1
.RP 为 “发布论文” 启动标题页
.RS 增加相对缩进一级。与 .IP 一起使用
.RE 结束一级相对缩进
.SG 签名行
.SH 无编号部分标题
.SM (仅 troff )将字号减小两点
.TL 标题行
.TS [H] 开始表格。 H 会将表头放在所有页面上。与后续的 .TH 一起使用
.TH 表格表头结束。必须与 .TS H 一起使用
.TE 结束表格
.UL 下划线后续文本,即使在 troff 中也是如此

7.2 内部宏和页面布局默认值

还有一些内部宏,如 .IZ (基本初始化)、 .RT (重置)、 .NP (新页面)等,它们在文档处理过程中自动执行一些初始化和重置操作。同时,有一些数字寄存器包含页面布局的默认值,如 cw (列宽)、 FL (脚注长度)、 FM (底部边距)等。

mermaid 流程图如下:

graph LR
    A[ms宏包] --> B[常用ms宏]
    A --> C[内部宏和页面布局默认值]
    B --> B1[.1c]
    B --> B2[.2c]
    B --> B3[.AB]
    C --> C1[.IZ]
    C --> C2[.RT]
    C --> C3[.NP]

8. mm 宏包

8.1 常用 mm 宏

描述
.1c 返回单栏格式
.2c 开始双栏格式
.AS [x][n] 开始类型为 x 的摘要,缩进 n 个空格。(仅与 .TM .RP 一起使用)(类型: 1 = 封面和第一页上的摘要; 2 = 仅封面上的摘要; 3 = 仅文件备忘录封面上的摘要)以 .AE 结束
.AE 结束摘要。以 .AS 开始
.AF [company name] 第一页的替代格式。更改第一页的 “主题/日期/发件人” 格式。如果给出参数,则不影响其他标题。无参数则抑制公司名称和标题
.AL [x][n] 开始类型为 x 的列表( 1 , A , a , I , 或 i ),缩进 n 个空格。如果第三个参数为 1 ,则项目之间不添加空行。默认是编号列表,缩进 5 个空格
.AT title 作者的头衔
.AU name 作者的姓名和其他信息
.AV name 批准签名行
.B [w] [x] ... w 设置为粗体(在 nroff 中为下划线), x 设置为上一个字体;最多六个参数
.BS 开始在页面底部打印的文本块,在脚注(如果有)之后,但在页脚之前
.BE 结束底部块并在脚注(如果有)之后,但在页脚之前打印
.BI [w] [x] w 设置为粗体(在 nroff 中为下划线), x 设置为斜体;最多六个参数
.BL [n] [1] 开始项目符号列表并将文本缩进 n 个空格。如果第二个参数为 1 ,则项目之间不添加空行
.BR [w] [x] w 设置为粗体(在 nroff 中为下划线), x 设置为罗马字体;最多六个参数
.CS [pgs] [other] [tot] [pgs] [tbls] [ref] 封面编号信息
.DF bf bl 开始类型为 x 和模式为 y 的浮动显示,缩进为 a 。(默认无缩进,无填充模式)以 .DE 结束。 x 为: L (无缩进)、 1 (标准缩进量)、 C (每行单独居中)或 CB (作为块居中)。 y 为: N (无填充模式)或 F (填充模式)
.DS 开始浮动或静态显示,类型为 x 和模式为 y ,缩进为 n 。类型和模式与 .DF 相同。以 .DE 结束
.DE 结束由 .DS .DF 开始的浮动或静态显示
.DL [h] [1] 开始虚线列表并将文本缩进 n 个空格。如果第二个参数为 1 ,项目之间无空格
.EC [caption] [n] [v] 方程标题。参数可选地覆盖默认编号,标志 f 决定数字 n 的使用。如果 f = 0 (默认), n 是编号的前缀;如果 f = 1 n 是后缀;如果 f = 2 n 替换编号
.EF [text] 在所有偶数页上打印文本作为页脚。文本格式为: 'left' center 'right'
.EH [text] 在所有偶数页上打印文本作为标题。文本格式为: 'left' center 'right'
.EQ [text] 使用文本作为标签开始方程显示
.EN 结束方程显示
.EX [caption] [n] [v] 展品标题。参数可选地覆盖默认编号,标志 f 决定数字 n 的使用。如果 f = 0 (默认), n 是编号的前缀;如果 f = 1 n 是后缀;如果 f = 2 n 替换编号
.FC [text] 使用文本进行正式结尾
.FD [0 - 11] 设置默认脚注格式
.FS [c] 使用 c 作为指示符开始脚注。默认是编号脚注
.FE 结束脚注
.FG [title] 图标题
.Hn [heading] 编号标题级别 n
.HC [c] 使用 c 作为连字符指示符
.HM [mark] 标题标记样式,跟随阿拉伯数字( 1 001 )、罗马数字( i I )或字母( a A
.HU heading 无编号标题
.HX 在打印标题之前用户提供的退出宏
.HY 在打印标题中间用户提供的退出宏
.HZ 标题之后用户提供的宏
.I [w] [x] w 设置为斜体(在 nroff 中为下划线), x 设置为上一个字体。最多六个参数
.IB [w] [x] w 设置为斜体(在 nroff 中为下划线), x 设置为粗体。最多六个参数
.IR [w] [x] w 设置为斜体(在 nroff 中为下划线), x 设置为罗马字体
.LB n m pad type [mark] [LI - space] [LB - space] 列表开始。允许完全控制列表格式。参数如下: n - 文本缩进; m - 标记缩进; pad - 与标记关联的填充; type - 如果为 0 ,使用指定的标记。如果非零,且标记为 1 , A , a , I , i ,列表将自动编号或按字母顺序编号或排序。在这种情况下, type 控制标记的显示方式; mark - 用于开始每个列表条目的符号或文本。 mark 可以为空(创建悬挂缩进)、文本字符串或 1 , A , a , I , 或 i 以创建自动编号或字母列表。标记的格式将受 type 影响; LI - space - 每个后续 .LI 宏之间输出的空行数(默认 1); LB - space - .LB 宏本身输出的空行数(默认 0)
.LC [n] 清除列表级别 n
.LE 结束列表
.LI [mark] 列表中的项目并指定标记
.ML mark [n] [1] 开始标记列表,缩进 n 个空格。如果第三个参数为 1 ,列表项目之间无空格
.MT [type] [title] 指定备忘录类型和标题。 type 为: "11" = 无类型; 0 = 无类型; 1 = 文件备忘录(默认); 2 = 程序员笔记; 3 = 工程师笔记; 4 = 发布论文; 5 = 外部信件;字符串 = 打印字符串。 title 是前缀到页码的用户提供的文本
.ND date 新日期。将日期更改为 date
.NP 段落开始时双行缩进
.NS [type] 符号开始。指定符号类型。 type 为: "11" = 复制到; 0 = 复制到; 1 = 复制(带附件)到; 2 = 复制(无附件)到; 3 = 附件; 4 = 附件; 5 = 附件; 6 = 附件; 7 = 另函寄上; 8 = 信件给; 9 = 备忘录给; 10 = 复制(带附件)到; 11 = 复制(无附件)到; 12 = 仅摘要到; 13 = 完整备忘录到;字符串 = 复制字符串到
.NE 符号结束
.OF [text] 在所有奇数页上打印文本作为页脚。文本格式为: 'left' center 'right'
.OH [text] 在所有奇数页上打印文本作为标题。文本格式为: 'left' center 'right'
.OK [topic] 其他关键字。为 .TM 封面指定主题
.OP 强制奇数页
.P [type] 开始段落类型。 type 为: 0 = 左对齐(默认), 1 = 缩进, 2 = 除 .H , .LC , .DE 之后缩进
.PF [text] 在所有页面上打印文本作为页脚。文本格式为: 'left' center 'right'
.PH [text] 在所有页面上打印文本作为标题。文本格式为: 'left' center 'right'
.PM [type] 每页上的专有标记(类型: P = 私有; N = 通知)
.PX 页面标题用户退出
.R 返回罗马字体(在 nroff 中结束下划线)
.RB [w] [x] w 设置为罗马字体, x 设置为粗体
.RD [input] 从终端读取输入
.RI [w] [x] w 设置为罗马字体, x 设置为斜体
.RS [arg] 开始自动编号参考。 arg 手动指定参考编号
.RF 参考文本结束
.RL [n] [1] 开始参考列表,将文本缩进 n 个空格。如果第二个参数为 1 ,列表项目之间无空格
.RP 生成参考页面
.S [n] [m] 将字号设置为 n ,垂直间距设置为 m (仅 troff )(默认: 10 12 )。或者,任一参数可以指定为 +n/m 以增加/减少当前值, D 使用默认值, C 使用当前值, P 使用上一个值
.SG [name] 使用 name 作为签名行
.SK n 跳过 n
.SM x [y] [z] 将字符串 x 减小一个字号。如果指定了字符串 x , y , 和 z y 减小一个字号
.SP [n] n 个垂直空白行
.TB [title] [n] [f] 提供表格标题。参数可选地覆盖默认编号,标志 f 决定数字 n 的使用。如果 f = 0 (默认), n 是编号的前缀;如果 f = 1 n 是后缀;如果 f = 2 n 替换编号
.TS [H] 开始表格。 H 会将表头放在所有页面上。与后续的 .TH 一起使用
.TH N 表格表头结束。必须与 .TS H 一起使用。 N = 仅在新页面上打印表格表头
.TE 结束表格
.TC [level] [level] [tab] [head] ... 生成目录
.TL 备忘录标题在下一行
.TM [n] 为技术备忘录编号 n 。(最多可指定九个)
.TP 页面顶部宏
.TX 用户为目录标题提供的退出
.TY 用户为目录标题提供的退出
.VL n [m] [1] 开始可变项目列表。将文本缩进 n 个空格,标记缩进 m 个空格。如果第三个参数为 1 ,列表项目之间无空格
.VM [n] [m] 在顶部边距添加 n 行,在底部边距添加 m
.WC [x] 将列或脚注宽度更改为 x x 为: FF - 关闭 FF 模式; N - 正常默认模式; WD - 宽显示; -WD - 使用默认列模式; WF - 宽脚注; -WF - 关闭 WF 模式; All - 所有脚注与第一个相同

8.2 预定义字符串和数字寄存器

mm 宏包还有一些预定义的字符串名称,如 BU (项目符号)、 Ci (目录缩进列表)、 DT (当前日期)等,以及一些数字寄存器,如 At (如果设置为 1 ,省略技术备忘录标题并提供适合信头的空格)、 Au (抑制第一页上的作者信息)等,这些都在文档的排版和格式设置中起到重要作用。

mermaid 流程图如下:

graph LR
    A[mm宏包] --> B[常用mm宏]
    A --> C[预定义字符串和数字寄存器]
    B --> B1[.1c]
    B --> B2[.2c]
    B --> B3[.AS]
    C --> C1[BU]
    C --> C2[Ci]
    C --> C3[DT]

9. tbl 预处理器

9.1 基本命令

命令 描述
.TS 开始表格
.TE 结束表格
.TS H 当表格将跨越多页时使用
.TH .TS H 一起使用,定义将在每页上打印的表头
.T& .TS H 一起使用,结束表格的表头部分

9.2 选项

选项影响整个表格,选项之间用逗号分隔,选项行必须以分号结尾。
| 选项 | 描述 |
| — | — |
| center | 在当前边距内居中 |
| expand | 与当前左右边距对齐 |
| (blank) | 与当前左边距对齐(默认) |
| box | 用盒子包围表格 |
| doublebox | 用两个盒子包围表格 |
| allbox | 用盒子包围每个表格条目 |
| tab (x) | 将制表符定义为 x |
| linesize (n) | 将线条或规则(例如来自盒子)设置为 n 点字号 |
| delim (xy) | 将 x y 识别为 eqn 分隔符 |

9.3 格式

格式行影响表格的各个列和行的布局。每行包含表格每列的一个关键字母,列条目之间用空格分隔,格式部分必须以句点结尾。除最后一行外,每行格式对应表格的一行,最后一行对应直到下一个 .T& (如果有)的所有后续行。
| 关键字母 | 描述 |
| — | — |
| C | 居中 |
| l | 左对齐 |
| r | 右对齐 |
| n | 对齐数字条目 |
| a | 对齐字母子列 |
| S | 水平跨越前一个列条目到本列 |
| h | 垂直延续上一行的条目到本行 |

其他选择(必须跟随关键字母):
| 选择 | 描述 |
| — | — |
| b | 粗体。后面必须跟空格 |
| i | 斜体。后面必须跟空格 |
| P n | 点字号 n |
| t | 从其范围的顶行开始任何对应的垂直跨越表格条目 |
| V | 等宽列 |
| n | 最小列宽。也用于文本块。 n 可以用任何可接受的 troff 单位给出 |
| v | 垂直行间距。仅用于文本块 |
| I | 列之间的分隔量(默认 3n) |
| | | 单垂直线。在关键字母之间输入 |
| || | 双垂直线。在关键字母之间输入 |
| - | 单水平线。代替关键字母使用 |
| = | 双水平线。代替关键字母使用 |

9.4 数据

数据部分包括表格的表头和文本。每个表格条目必须用制表符分隔。可以使用 troff 命令(如 .sp # .ce ),但除非你知道自己在做什么,否则不要使用宏。

10. eqn 预处理器

10.1 基本命令

命令 描述
.EQ 开始排版数学公式
.EN 结束排版数学公式

10.2 字符翻译

以下字符序列会被识别并翻译:
| 原字符 | 翻译后 |
| — | — |
| >= | 大于等于 |
| <= | 小于等于 |
| __ | 长破折号 |
| _ _ | 长破折号 |
| I = | 恒等于 |
| +- | 正负号 |
| -> | 右箭头 |
| <- | 左箭头 |
| << | 远小于 |
| >> | 远大于 |
| inf | 无穷大 |
| partial | 偏导数 |
| half | 二分之一 |
| prime | 撇号 |
| approx | 约等于 |
| nothing | 无(空) |
| cdot | 中心点乘号 |
| times | 乘号 |
| X | 叉乘号 |
| del | 梯度算子 |
| V | 向量符号 |
| grad | 梯度符号 |
| sum | 求和符号 |
| int | 积分符号 |
| r” | 未知(文档未明确) |
| prod | 乘积符号 |
| n | 未知(文档未明确) |
| v | 向量符号 |
| union | 并集符号 |
| inter | 交集符号 |
| n | 未知(文档未明确) |

10.3 单词识别

eqn 还能识别一些单词并进行相应处理。
| 单词 | 描述 |
| — | — |
| above | 分离堆或矩阵列的部分 |
| back n | 水平向后移动 n 个 1/100 em |
| bold | 更改为粗体字体 |
| ccol | 居中矩阵的一列 |
| col | 与前面的 1 r 一起使用,左或右对齐矩阵的列 |
| cpile | 创建一个居中堆(与 pile 相同) |
| define | 为常用字符串创建一个名称 |
| delim | 定义两个字符来标记要在行内打印的 eqn 方程的左右两端 |
| down n | 垂直向下移动 n 个 1/100 em |
| fat | 通过重叠打印加宽当前字体 |
| font x | 更改为字体 x ,其中 x 是单字符名称或字体编号 |
| from | 用于求和、积分等结构中,表示下限 |
| fwd n | 水平向前移动 n 个 1/100 em |
| gfont x | 为所有方程设置全局字体 x |
| gsize n | 为所有方程设置全局大小 |
| up n | 垂直向上移动 n 个 1/100 em |
| italic | 更改为斜体字体 |
| lcol | 左对齐矩阵的一列 |
| left | 创建大括号、方括号、竖线等 |
| lineup | 对齐不同行方程中的标记 |
| lpile | 左对齐堆的元素 |
| mark | 记住方程中的水平位置。与 lineup 一起使用 |
| matrix | 创建矩阵 |
| ndefine | 创建仅在 neqn 运行时生效的定义 |
| over | 创建分数 |
| pile | 创建垂直堆,元素彼此居中 |
| rcol | 右对齐矩阵的一列 |
| right | 创建大括号、方括号、竖线等 |
| roman | 更改为罗马字体 |
| rpile | 右对齐堆的元素 |
| size n | 将字体大小更改为 n |
| sqrt | 绘制平方根符号 |
| sub | 开始下标 |
| sup | 开始上标 |
| tdefine | 创建仅适用于 eqn 的定义 |
| to | 用于求和、积分等结构中,表示上限 |
| { | 强制在输出中添加额外空间 |
| } | 强制添加大小为 { 所添加空间一半的空间 |
| { | 强制 eqn 将元素视为一个单位 |
| "" | 引号内的字符串不受 eqn 的更改影响 |

10.4 优先级

如果不使用花括号, eqn 将按以下顺序执行操作:
1. dyad vec under bar tilde hat dot dotdot
2. fwd back down up
3. fat
4. roman italic bold
5. size
6. sub sup
7. sqrt
8. over from to

over sqrt left right 操作向左分组,其他操作向右分组。

11. pic 预处理器

11.1 基本概念

pic 中,有多种绘制图形的方法,它结合了几何语言和英语。可以通过指定线条的方向、大小和起点来绘制线条,也可以简单地说 “从那里到那里” 来达到相同的效果。完整的基本对象描述可以通过开始新行或分号字符( ; )结束。单个基本描述可以通过在第一行末尾使用反斜杠字符( \ )延续到下一行。可以在以 # 开头的行上放置注释。

11.2 宏

描述
.PS [h [w]] 开始 pic 描述。如果指定了 h w ,它们是图片的期望高度和宽度;整个图片将扩展或收缩以填充此空间
.PS <file 读取文件内容代替当前行
.PE 结束 pic 描述
.PF 结束 pic 描述并返回到匹配 .PS 之前的垂直位置

11.3 声明

pic 描述的开头,可以声明新的比例和任意数量的变量。 pic 默认使用 1:1 的比例,即 1 等于 1 英寸。可以通过声明 scale = n 来指定不同的比例,例如 1 等于 1/n 英寸。可以使用小写字符作为变量,在描述中使用变量替换数字。例如,在描述开头声明 a = n ,然后可以写 line right a

11.4 基本图形

基本图形 描述
arc [cw] [options] ["text"] 圆的一部分。(默认 = 圆的 1/4)。 cw 选项指定顺时针圆弧;默认是逆时针
arrow [options] ["text"] [then ...] 绘制箭头。本质上与 line -> 相同
box [options] ["text"] 绘制盒子
circle [options] ["text"] 绘制圆
ellipse [options] ["text"] 绘制椭圆
line [options] ["text"] [then ...] 绘制线条
move [options] ["text"] 在绘图中移动位置。(本质上是一条不可见的线)
spline [options] ["text"] [then ...] 线条,具有 “then” 会导致方向逐渐(倾斜)变化的特性
"text" 文本居中在当前点

11.5 选项

选项 描述
right [n] 指定基本图形的方向;默认是前一个描述的方向。通过在选项行上使用两个方向可以得到对角线。每个方向后面可以跟指定的长度 n
left [n] 同上
up [n] 同上
down [n] 同上
rad n 指定基本图形的半径为 n (或直径为 n
diam n 同上
ht n 指定基本图形的高度或宽度为 n 。对于箭头、线条或样条线,指箭头的大小
wid n 同上
same 指定基本图形与最近匹配的基本图形具有相同的尺寸
at point 指定基本图形在点处居中
with position at point 指定基本图形的指定位置在点处
from point1 to point2 指定基本图形从点 point1 绘制到点 point2 。点可以表示为笛卡尔坐标或相对于先前对象的位置
-> 指定箭头向前指向
<- 指定箭头向后指向
<-> 指定箭头双向指向
chop n m 从基本图形的开头切掉 n ,从结尾切掉 m 。如果只有一个参数,则从两端切掉相同的值
dotted 指定基本图形绘制为虚线
dashed 指定基本图形绘制为点划线
invis 指定基本图形为不可见。默认是实线
then ... 继续以新方向绘制基本图形。仅与线条、样条线、移动和箭头相关

11.6 文本

将文本放在引号内。要换行,将其分成两组(或更多组)引号。文本总是在对象内居中显示,除非给出以下参数之一:
| 参数 | 描述 |
| — | — |
| ljust | 文本左对齐到中心 |
| rjust | 文本右对齐到中心 |
| above | 文本显示在中心上方 |
| below | 文本显示在中心下方 |

11.7 对象块

可以将由多个基本图形组合而成的复杂对象(例如八边形)声明为一个块,将其视为单个对象:

Object: [
    description
]

方括号用作分隔符。注意对象声明为专有名词,因此应首字母大写。

11.8 宏

可以使用宏重复相同的命令序列。语法如下:

define sequence %
    description
%

在这个例子中,使用了百分号( % )作为分隔符,但任何不在描述中的字符都可以使用。宏可以接受变量,在定义中表示为 “ $1 ” 到 “ $9 ”。使用语法 sequence(value1, value2, ...) 调用宏。

11.9 定位

pic 描述中,第一个动作将从 (0,0) 开始,除非使用坐标另行指定。因此,当对象放置在第一个对象的上方和左侧时,点 (0,0) 将在绘图中向下和向右移动。所有点最终都会由格式化程序转换为 x y 坐标。可以通过坐标的增量或减量来引用图片中的特定点,例如 2nd ellipse - (3, 1) 。可以通过在对象末尾放置 .x .y 来引用对象的 x y 坐标。

11.10 角落和数值运算符

可以使用角落来指定对象上的特定点,语法为 .corner of object object.corner ,角落可以是 n (北)、 e (东)、 ne (东北)等。 pic 中还有一些数值运算符,如 + (加法)、 - (减法)、 * (乘法)、 / (除法)、 % (取模)。

11.11 默认值

对象 默认值
arcrad 0.25
arrowwid 0.05
arrowht 0.1
boxwid 0.75
boxht 0.5
circlerad 0.25
dashwid 0.05
ellipseht 0.5
ellipsewid 0.75
linewid 0.5
lineht 0.5
movewid 0.5
moveht 0.5
scale 1
textht 0
textwid 0

通过以上对各种格式化命令和宏包、预处理器的详细介绍,我们可以看到在文本排版和图形绘制方面有丰富的工具和方法可供选择,能够满足不同场景下的多样化需求。无论是简单的文本排版还是复杂的数学公式和图形绘制,都可以通过合理运用这些工具来实现。

考虑柔性负荷的综合能源系统低碳经济优化调度【考虑碳交易机制】(Matlab代码实现)内容概要:本文围绕“考虑柔性负荷的综合能源系统低碳经济优化调度”展开,重点研究在碳交易机制下如何实现综合能源系统的低碳化与经济性协同优化。通过构建包含风电、光伏、储能、柔性负荷等多种能源形式的系统模型,结合碳交易成本与能源调度成本,提出优化调度策略,以降低碳排放并提升系统运行经济性。文中采用Matlab进行仿真代码实现,验证了所提模型在平衡能源供需、平抑可再生能源波动、引导柔性负荷参与调度等方面的有效性,为低碳能源系统的设计与运行提供了技术支撑。; 适合人群:具备一定电力系统、能源系统背景,熟悉Matlab编程,从事能源优化、低碳调度、综合能源系统等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①研究碳交易机制对综合能源系统调度决策的影响;②实现柔性负荷在削峰填谷、促进可再生能源消纳中的作用;③掌握基于Matlab的能源系统建模与优化求解方法;④为实际综合能源项目提供低碳经济调度方案参考。; 阅读建议:建议读者结合Matlab代码深入理解模型构建与求解过程,重点关注目标函数设计、约束条件设置及碳交易成本的量化方式,可进一步扩展至多能互补、需求响应等场景进行二次开发与仿真验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值