【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
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/83486.shtml
英文地址,請注明出處:http://en.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)、交換機等工控產品,如…