如何在打字机中的#list函数中插入函数中的单词列表?

问题描述 投票:0回答:1

我做了这个函数,可以创建单词列表:

#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.]) 

正在工作。

typst
1个回答
0
投票

在您的代码中,

bullet
不返回内容数组:

#let example = ("Hello", "Word")

#repr(bullet(example))

#repr(([Hello;], [Word.]))

the string representation of bullet's output

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),
)

结果是:

Rendered result of bullet_next

代码将项目映射到

(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),
)

Another rendered result of bullet_next

© www.soinside.com 2019 - 2024. All rights reserved.