我做了这个函数,可以创建单词列表:
#let bullet(list_bullet)={
let number=0
for content in list_bullet {
number=number+1
if number == list_bullet.len() {
[[#content .]]
break
}
[[#content ;], ]
}
}
#let example = ("Hello","Word")
#bullet(example)
==> [Hello;],[Word.]
我想将此结果插入到 #list 函数中,但它不起作用......
#list(marker: [#text(rgb(0,158,161))[#sym.circle.filled]], spacing : 8pt, indent : 12pt, bullet(example))
我有这个结果:
- [Hello ;], [Word .]
我想要 :
- Hello;
- Word.
我想知道 Typste 之间有哪些区别:
#list(marker: [#text(rgb(0,158,161))[#sym.circle.filled]], spacing : 8pt, indent : 12pt, bullet(example))
并且:
#list(marker: [#text(rgb(0,158,161))[#sym.circle.filled]], spacing : 8pt, indent : 12pt,[Hello;],
[Word.])
正在工作。
在您的代码中,
bullet
不返回内容数组:
#let example = ("Hello", "Word")
#repr(bullet(example))
#repr(([Hello;], [Word.]))
list
需要一个内容(或字符串)数组来渲染,我会使用这样的代码:
#let bullet_next(list_bullet) = {
list_bullet
.enumerate()
.map(item => {
if item.first() != list_bullet.len() - 1 {
item.last() + ";"
} else {
item.last() + "."
}
})
}
#bullet_next(example)
#repr(bullet_next(example))
#list(
marker: [#text(rgb(0, 158, 161))[#sym.circle.filled]],
spacing: 8pt,
indent: 12pt,
..bullet_next(example),
)
结果是:
代码将项目映射到
(index, item)
,然后将元组转换为字符串。还可以使用text
、block
等作为返回内容:
#let bullet_next(list_bullet) = {
list_bullet
.enumerate()
.map(item => {
if item.first() != list_bullet.len() - 1 {
block(stroke: 1pt, inset: 2pt, item.last() + ";")
} else {
item.last() + "."
}
})
}
#bullet_next(example)
#repr(bullet_next(example))
#list(
marker: [#text(rgb(0, 158, 161))[#sym.circle.filled]],
spacing: 8pt,
indent: 12pt,
..bullet_next(example),
)