【Typst】6.布局函数

概述

上节我们介绍了文档结构元素的函数,本节介绍一些控制布局使用的函数,掌握他们之后你可以更进一步的控制页面元素的布局。

系列目录

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

对齐

align(alignment, // 沿两个轴的对齐方式。默认:start + topcontent,   // 要对齐的内容。
) -> content

alignment可能的值为:

  • start:在文本方向的开头对齐。
  • end:在文本方向的末尾对齐。
  • left:向左对齐。
  • center:水平对齐。
  • right:在右侧对齐。
  • top:在顶部对齐。
  • horizon:垂直对齐。
  • bottom:在底部对齐。

整体使用:

#set align(center)
这是第一段 \
这是第二段 \
这是第三段 \

#align(left)[左对齐]
#align(center)[居中对齐]
#align(right)[右对齐]

#rect(width: 100%,height: 200pt
)[#align(left+top)[left+top]#align(center+horizon)[center+horizon]#align(right+bottom)[right+bottom]
]

旋转与角度

rotate(angle,   		    // 旋转量,角度或弧度,默认为0degorigin: alignment,  // 旋转的中心点,默认center + horizoncontent,            // 要旋转的内容
) -> content

angle可以赋予:

  • 角度值:如120deg,代表120°
  • 弧度值:如1.57rad,代表1/2弧度,也就是90°
// 以默认旋转中心,顺时针旋转45°
#rotate(45deg)[#rect()[旋转的内容]
]

// 以默认旋转中心,逆时针旋转45°
#rotate(-45deg)[#rect()[旋转的内容]
]

// 以默认旋转中心,顺时针旋转1.57弧度
#rotate(1.57rad)[#rect()[旋转的内容]
]

// 以左上角为旋转中心,顺时针旋转30°
#rotate(30deg,origin: top+left)[#rect()[旋转的内容]
]

缩放和翻转(镜像)

scale(x: ratio,   		// 水平缩放因子,默认:100%y: ratio,			// 垂直缩放因子,默认:100%origin: alignment,  // 缩放变换的原点,默认:center + horizoncontent,			// 要缩放的内容
) -> content
#rect(width:100%,
)[#set align(center)这里是原始效果// 水平翻转#scale(x:50%)[这里是水平压缩50%]#scale(x:150%)[这里是水平拉伸150%]#scale(x:-100%)[这里是水平翻转]// 垂直翻转#scale(y:50%)[这里是垂直压缩50%]#scale(y:450%)[这里是垂直拉伸450%]#scale(y:-100%)[这里是垂直翻转]
]

移动

move(dx: relative,  // 水平位移dy: relative,  // 垂直位移content,       // 要移动的内容
) -> content
#rect(inset: 0pt, move(dx: 6pt, dy: 6pt,rect(inset: 8pt,fill: white,stroke: black,[这里是内容])
))

block和box

block和box都可以看作是一个容器,只不过:

  • block是块级元素,无论宽度是否撑满页面宽度,始终是独占一行
  • box是行内元素,可以在行内与文字进行混排
block(width: auto relative,height: auto relative,breakable: bool,fill: none color gradient pattern,stroke: none length color gradient stroke pattern dictionary,radius: relative dictionary,inset: relative dictionary,outset: relative dictionary,spacing: relative fraction,above: relative fraction,below: relative fraction,clip: bool,nonecontent,
) -> content
box(width: auto relative fraction,height: auto relative,baseline: relative,fill: none color gradient pattern,stroke: none length color gradient stroke pattern dictionary,radius: relative dictionary,inset: relative dictionary,outset: relative dictionary,clip: bool,nonecontent,
) -> content

分栏

columns(int,                // 列数,默认为2gutter: relative,   // 列间距,默认:4%content,            // 分栏的内容
) -> content

强制换行可以用colbreak():

colbreak(weak:bool   //如果为 true,则如果当前列已为空,则跳过列分隔符。默认:false
) -> content

局部分栏

#columns()[  //默认分两栏#("这里是一段重复文本" * 20)#colbreak() //强制分栏#("这里是一段重复文本" * 20)
]

整页分栏

#set page(columns: 2)   // 设置当前页面整体分为两栏== 分栏#("这里是一段重复文本" * 20)
#colbreak() //强制分栏
#("这里是一段重复文本" * 20)

水平和垂直分布

stack(dir: direction,                  // 内容的排列方向,默认:ttbspacing: none relative fraction, // 内容间距relative fraction content,       // 要排列二点内容
) -> content

dir可能的值为:

  • ltr:从左到右。
  • rtl:从右到左。
  • ttb:从上到下。
  • btt:从下到上。
#stack(rect[1],rect[2],rect[3],
)

#stack(dir:direction.ltr,   // 由左向右排列rect[1],rect[2],rect[3],
)

#stack(dir:direction.ltr,spacing: 5pt,         // 设定水平间距rect[1],rect[2],rect[3],
)

水平和垂直间距

// 水平间距
h(relative fraction,   // 间距值weak: bool,
) -> content
// 垂直间距
v(relativefraction,    // 间距值weak: bool,
) -> content
随便写点什么 #h(2em) 后续的内容。

随便写点什么 #h(1fr) 后续的内容。\
随便写点什么2 #h(1fr) 后续的内容。

随便写点什么3 #v(1em) 后续的内容。

网格布局

grid(columns: auto int relative fraction array, // 列数或列设置rows: auto int relative fraction array,    // 行数或行设置gutter: auto int relati vefraction array,  // 行列间距column-gutter: auto int relative fraction array,  // 列间距,优先于 gutterrow-gutter: auto int relative fraction array,     // 行间距,优先于 guttercontent,    // 布局的子项
) -> content
#grid(columns: 2,rect[12],rect[12],rect[12],rect[12]
)
// 统一设置rect的样式
#set rect(width: 100%,height: 100pt
)#grid(columns: (100pt,1fr),  // 左侧宽100pt,右侧为页面剩余宽度rect[1],rect[2],rect[3],rect[4]
)

#set rect(width: 100%,height: 100pt
)#grid(columns: (100pt,1fr),gutter: 5pt,           // 统一设置行列间距rect[1],rect[2],rect[3],rect[4]
)

绝对定位

place()用于将内容绝对定位。

place(auto alignment,    // 位置,默认:startfloat: bool,       // 是否浮动布局,默认:falseclearance: length, // 放置的元素在浮动布局中的间隙量。默认:1.5emdx: relative,      // 水平位移dy: relative,      // 垂直位移content,           // 定位的内容
) -> content

隐藏

hide(content    // 要隐藏的内容
) -> content

重复

repeat(content    // 要重复的内容
) -> content

内容边距

pad(left: relative,   top: relative,right: relative,bottom: relative,x: relative,y: relative,rest: relative,content,
) -> content
#rect()[    // 外部矩形#pad(     left:100pt,     // 左侧边距100ptrect(           // 内部矩形width: 100%,height: 100pt,fill: rgb("#eee"),[左侧边距100pt]))
]

#rect()[    // 外部矩形#pad(     rest:100pt,     // 统一边距100ptrect(           // 内部矩形width: 100%,height: 100pt,fill: rgb("#eee"),[统一边距100pt]))
]

#rect()[    // 外部矩形#pad(     x:100pt,        // 左右边距100ptrect(           // 内部矩形width: 100%,height: 100pt,fill: rgb("#eee"),[左右边距100pt]))
]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/bicheng/83486.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【音视频】FFmpeg 编码H265

一、概述 实现了读入本地yuv文件,通过libx265编码为H265格式,并存储到本地文件中 二、实现流程 准备文件 在build路径下准备yuv文件 在项目中添加文件参数,输出为h265文件,使用libx265编码 初始化解码器 通过传进来的libx265…

ECreator低代码平台-文件管理器的使用说明

Ecreator是中山华拓信息技术公司旗下的一款低代码平台,主要功能包含:文件管理器,表单数据管理器,仪表盘设计界面,内容页面自定义等功能,可以用于快速低成本的构建网站和企业内部应用。 下面介绍一下文件管…

高考加油!UI界面生成器!

这个高考助力标语生成器具有以下特点: 视觉设计:采用了蓝色为主色调,搭配渐变背景和圆形装饰元素,营造出宁静而充满希望的氛围,非常适合高考主题。 标语生成:内置了超过 100 条精心挑选的高考加油标语&a…

阿姆达尔定律的演进:古斯塔夫森定律

前言 在上一篇文章《使用阿姆达尔定律来提升效率》中提到的阿姆达尔定律前提是假设问题的规模保持不变,并且给定一台速度更快的机器,目标是更快地解决问题。然而,在大多数情况下,这并不完全正确。当有一台更快的机器时&#xff0…

【RabbitMQ】- Channel和Delivery Tag机制

在 RabbitMQ 的消费者代码中,Channel 和 tag 参数的存在是为了实现消息确认机制(Acknowledgment)和精细化的消息控制。 Channel 参数 作用 Channel 是 AMQP 协议的核心操作接口,通过它可以直接与 RabbitMQ 交互: 手…

核心机制:流量控制

搭配滑动窗口使用的 窗口大小 窗口越大,传输速度就越快,但是也不能无限大,太大了,对于可靠性会有影响 比如发生方以非常快的速度,发送,接收方的处理速度跟不上,也就会导致有效数据被接受方丢弃(又得重传) 流量控制,就是根据接收方的处理能力(如何衡量?),干预到发送方的发送…

深度强化学习赋能城市消防优化,中科院团队提出DRL新方法破解设施配置难题

在城市建设与发展中,地理空间优化至关重要。从工业园区选址,到公共服务设施布局,它都发挥着关键作用。但传统求解方法存在诸多局限,如今,深度学习技术为其带来了新的转机。 近日,在中国地理学会地理模型与…

安科电动机保护器通过ModbusRTU转profinet网关与PLC通讯

安科电动机保护器通过ModbusRTU转profinet网关与PLC通讯 在工业自动化领域,设备间的通信和数据交互至关重要。Modbus作为一种常用的通讯协议,广泛应用于各种工业现场;而Profinet则凭借其高效、实时性,在工业以太网通讯中占据重要…

python直方图

在Python中,绘制直方图(Histogram)是一项非常常见的任务,通常用于数据可视化,以展示数据的分布情况。Python中有多种库可以绘制直方图,其中最常用的两个库是Matplotlib和Seaborn。此外,Pandas库…

在Oxygen编辑器中使用DeepSeek

罗马尼亚公司研制开发的Oxygen编辑器怎样与国产大模型结合,这是今年我在tcworld大会上给大家的分享,需要ppt的朋友请私信联系 - 1 - Oxygen编辑器中的人工智能助手 Oxygen编辑器是罗马尼亚的Syncro Soft公司开发的一款结构化文档编辑器。 它是用来编写…

neo4j 5.19.0安装、apoc csv导入导出 及相关问题处理

前言 突然有需求需要用apoc 导入 低版本的图谱数据,网上资料又比较少,所以就看官网资料并处理了apoc 导入的一些问题。 相关地址 apoc 官方安装网址 apoc 官方导出csv 教程地址 apoc 官方 导入 csv 地址 docker 安装 执行如下命令启动镜像 doc…

macos常见且应该避免被覆盖的系统环境变量(避免用 USERNAME 作为你的自定义变量名)

文章目录 macos避免用 USERNAME 作为你的自定义变量名macos常见且应该避免被覆盖的系统环境变量 macos避免用 USERNAME 作为你的自定义变量名 问题: 你执行了:export USERNAME“admin” 然后执行:echo ${USERNAME} 输出却是:xxx …

Python训练打卡Day41

简单CNN 知识回顾 数据增强卷积神经网络定义的写法batch归一化:调整一个批次的分布,常用与图像数据特征图:只有卷积操作输出的才叫特征图调度器:直接修改基础学习率 卷积操作常见流程如下: 1. 输入 → 卷积层 → Batch…

【亲测有效】Mybatis-Plus中更新字段为null

Mybatis-Plus中更新字段为null 遇到问题 Mybatis-Plus更新的默认行为如下: Mybatis-Plus默认如果某个字段为null, 默认不更新这个字段, 例如有个Double类型的字段, 当前数据库数据为10, 然后传参时当前字段为null, 实际上Mybatis-Plus是不会覆盖该字段为null的 在传参的时候如…

如何使用插件和子主题添加WordPress自定义CSS(附:常见错误)

您是否曾经想更改网站外观的某些方面,但不知道怎么做?有一个解决方案——您可以将自定义 CSS(层叠样式表)添加到您的WordPress网站! 在本文中,我们将讨论您需要了解的有关CSS的所有知识以及如何使用它来修…

左值引用和右值引用

一、基本概念 左值(lvalue)和右值(rvalue) 左值指的是有确定存储位置(地址)的对象,通常可以出现在赋值语句左侧。例如:变量名、解引用指针得到的对象、数组元素等都属于左值。 右值…

django入门-orm数据库操作

一:下载数据库依赖项mysqlclient pip install mysqlclient 二:django配置文件配置数据库链接 路径:mysite2\mysite2\settings.py DATABASES {default: {ENGINE: django.db.backends.mysql,NAME: data, # 数据库名称USER: root, …

国标GB28181设备管理软件EasyGBS视频平台筑牢文物保护安全防线创新方案

一、方案背景​ 文物作为人类文明的珍贵载体,具有不可再生性。当前,盗窃破坏、游客不文明行为及自然侵蚀威胁文物安全,传统保护手段存在响应滞后、覆盖不全等局限。随着5G与信息技术发展,基于GB28181协议的EasyGBS视频云平台&…

NetSuite Bundle - Dashboard Refresh

儿童节快乐! 今朝发一个Bundle,解决一个NetSuite Dashboard的老问题。出于性能上的考虑,NetSuite的Dashboard中的Portlet,只能逐一手工刷新。有人基于浏览器做了插件,可以进行自动刷新。但是在我们做项目部署时&#…

<PLC><socket><西门子>基于西门子S7-1200PLC,实现手机与PLC通讯(通过websocket转接)

前言 本系列是关于PLC相关的博文,包括PLC编程、PLC与上位机通讯、PLC与下位驱动、仪器仪表等通讯、PLC指令解析等相关内容。 PLC品牌包括但不限于西门子、三菱等国外品牌,汇川、信捷等国内品牌。 除了PLC为主要内容外,PLC相关元器件如触摸屏(HMI)、交换机等工控产品,如…