当前位置: 首页 > news >正文

【Typst】4.导入、包含和读取

概述

上节概述了Typst脚本的基础语法,在此基础上,本节介绍Typst文件的导入、包含和读取的内容。你将可以更简单灵活的组织你的文件内容。

系列目录

  • 1.Typst概述
  • 2.Typst标记语法和基础样式
  • 3.Typst脚本语法
  • 4.导入、包含和读取
  • 5.文档结构元素与函数
  • 6.布局函数

导入模块

使用import语句可以导入自定义模块或Typst内部模块

import "bar.typ"                    // 将bar.typ作为模块导入
import "bar.typ" as baz             // 将bar.typ作为模块导入,重命名为baz
import "bar.typ": a,b               // 将bar.typ作为模块导入,引入其中定义的a和b变量
import "bar.typ":a as one,b as two  // 重命名引入的a和b变量
import "bar.typ": *                 // 导入bar.typ中的所有变量

导入包

import除了导入模块外,也可以用于导入自己或第三方的包。

#import "@preview/cmarker:0.1.0"

关于第三包的使用将专门一节讲解。

导入模板

import还可以用于导入模板。

模板可以看做是特殊的Typst脚本文件,用于统一定制页面的格式,并调用生成相同风格的文档。

关于创建和导入模板见后节。

包含文件内容

可以使用include语句包含其他.typ文件的内容到当前文件。对于大体量的书写,可以将内容分散到不同的.typ文件中,然后在主文件中包含和排序,方便管理。

关于导入和包含以及一个成熟的Typst排版架构见下图:

Typst的包含(#include)与导入(#import)

  • 模板中定义基础的页面、段落等样式,以及文档的基本结构,比如封面、目录
  • 所谓“模块”可以看作是一个自定义函数库,通过编写函数,你可以更方便的输出一些内容
  • 主文件负责内容的管理:包括模板的使用,库的导入,以及管理章节的之间的顺序等等
  • 通过将内容划分为章节,可以获得更好的写作体验。

读取并显示文件内容

使用read()函数,可以读取任意文件内容,默认以字符串形式读取。

这意味着你不仅可以在.typ文件中通过include()包含其他.typ文件,也可以用read()读取任意纯文本文件,比如MarkDown、HTML等等。

读取和显示MarkDown的内容

在Typst项目目录下创建“x.md”,内容如下:

# 这是MarkDown的内容你可以看到它被正常的引入。#rect()

在Typst中使用read()函数读取并显示

#let md = read("x.md")//读取
#rect(md)

可以看到MarkDown中的内容会被原样输出,而不会处理类似typst语法的内容。

读取csv文件并用表格显示

读取csv文件不需要使用read()函数,直接使用csv()即可:

“a.csv”的内容如下:

张三,男,45
张三,男,45
张三,男,45
#csv("a.csv")

显示:

在这里插入图片描述

可以看到内容就是一个二维数组。

用表格显示:

#let data = csv("a.csv")#table(columns: 3,..data.flatten())

在这里插入图片描述

读取JSON文件

JSON文件也可以直接使用json()函数读取:

“b.json”内容如下:

{"title":"JSON测试","author":"巽星石"
}
#json("b.json")

显示:
在这里插入图片描述

可以看到内容被转化为字典。因此也就可以直接通过字典的语法获取对应键的值:

#let data = json("33.json")#data.title \
#data.author

在这里插入图片描述

http://www.lqws.cn/news/105661.html

相关文章:

  • Spring AI Alibaba + Nacos 动态 MCP Server 代理方案
  • Playwright定位器详解:自动化测试的核心工具
  • 集合类基础概念
  • 2023年12月四级真题作文的分析总结
  • 704. 二分查找 (力扣)
  • 十五、【测试执行篇】异步与并发:使用 Celery 实现测试任务的后台执行与结果回调
  • GaLore:基于梯度低秩投影的大语言模型高效训练方法详解一
  • JSCH使用SFTP详细教程
  • Hadoop复习(九)
  • Linux 与 Windows:哪个操作系统适合你?
  • javascript 实战案例 二级联动下拉选框
  • godwork_ AT 5.2 摄影测量空三数据处理软件。
  • 星敏感器:卫星姿态测量的“星空导航仪”
  • 关系型数据库通过sql语句实现悲观锁与乐观锁
  • Golang 依赖注入:构建松耦合架构的关键技术
  • 原始数据去哪找?分享15个免费官方网站
  • 用AI(Deepseek)做了配色网站-功能介绍【欢迎体验】
  • 力扣HOT100之多维动态规划:1143. 最长公共子序列
  • 52. N 皇后 II【 力扣(LeetCode) 】
  • Leetcode - 周赛 452
  • 动态规划-647.回文子串-力扣(LeetCode)
  • LeetCode 152. 乘积最大子数组 - 动态规划解法详解
  • 代码随想录60期day56
  • Android Kotlin 算法详解:链表相关
  • SpringBoot核心注解详解及3.0与2.0版本深度对比
  • java复习 02
  • 2.3 关于async/await的原理介绍
  • IBM DB2分布式数据库架构
  • Baklib内容中台AI重构智能服务
  • 秋招准备-数据结构