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

【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.xdnf.cn/news/10821.html

相关文章:

  • 【算法设计与分析】实验——汽车加油问题, 删数问题(算法实现:代码,测试用例,结果分析,算法思路分析,总结)
  • 行列式详解:从定义到应用
  • 滚动部署详解
  • Qt踩坑记录
  • 【Spring AI 1.0.0】Spring AI 1.0.0框架快速入门(1)——Chat Client API
  • 湖北理元理律师事务所:法律视角下的债务优化与生活平衡之道
  • 如何在 vue 中实现一个自定义拖拽的指令或插件
  • Spring @Autowired自动装配的实现机制
  • 手机邮箱APP操作
  • 风机巡检方案艰难之路
  • 全球高尔夫球场运营服务市场:现状、挑战与未来发展
  • Cursor使用最佳实践总结
  • 用 PyQt5 打造一个可视化 JSON 数据解析工具
  • 第二篇: 深入解析模型上下文协议(MCP):技术架构、核心组件与深远影响
  • SpringBoot2.3.1集成Knife4j接口文档
  • GirtHub访问不了解决方案
  • 【亲测有效】Mybatis-Plus中更新字段为null
  • android FragmentManager 删除所有Fragment 重建
  • EscapeX:去中心化游戏,开启极限娱乐新体验
  • Mybatis--创建mapper接口
  • IP话机和APP拨打电话的区别
  • Go语言学习-->从零开始搭建环境
  • FreeRTOS的简单介绍
  • 从0开始使用 Vue3 和 TypeScript 搭建项目详细教程
  • 1.Nodejs开发注意和前端区别
  • C语言:数据在内存中的存储
  • 关于list集合排序的常见方法
  • 《TCP/IP 详解 卷1:协议》第5章:Internet协议
  • 红黑树与红黑树的插入——用C++实现
  • Python----循环神经网络(BiLSTM:双向长短时记忆网络)