Я хочу сделать в своем резюме индикатор выполнения, чтобы показать, насколько я компетентн в каком-либо навыке, подобно тому, как отображаются звезды при оценке фильма на веб-сайте. В идеале мне бы также хотелось, чтобы они были выровнены по правой стороне контейнера-коробки, в котором они находятся, чтобы, если я помещу несколько навыков друг под другом, все квадраты выровнялись.
Я попытался создать функцию для отображения такого рода навыков как таковую:
#let skill(level: int, body) = {
body
for i in range(5){
if i < level{
square(width: 10pt, fill: black)
} else {
square(width: 10pt)
}
}
}
Но в каждом новом квадрате есть разрыв, благодаря чему он не похож на турник.





rect, square, ellipse и т. д. по умолчанию имеют блочный стиль (в отдельном абзаце). Вы ищете box, который размещает элементы непосредственно рядом друг с другом в одном блоке абзаца:
#let skill(level: int, body) = {
let skill-box = box.with(stroke: black, width: 1em, height: 1em, baseline: 0.25em)
body
h(1em)
for i in range(5){
if i < level{
skill-box(fill: black)
} else {
skill-box()
}
}
}
#skill(level: 3)[Coding]
Если вы предпочитаете коробки, расположенные вертикально:
#let skill(level: int, body) = {
let skill-box = box.with(stroke: black, width: 1em, height: 1em, baseline: 0.25em)
body
h(1em)
let boxes = range(5).map(i => {
if i < level{
skill-box(fill: black)
} else {
skill-box()
}
})
// btt = bottom-to-top. `ttb` will place the black blocks above white ones
stack(dir: btt, spacing: 0em, ..boxes)
}