Showybox is a package for creating colorful and customizable boxes.
Usage
To use this library through the Typst package manager (for Typst 0.6.0 or greater), write #import "@preview/showybox:0.1.1": showybox
at the beginning of your Typst file.
Once imported, you can create an empty showybox by using the function showybox()
and giving a default body content inside the parenthesis or outside them using squared brackets []
.
By default, a box with no title, black borders, white background and 5pt
border radius will be created.
#import "@preview/showybox:0.1.1": showybox
#showybox()[
Hello world!
]
Looks quite simple, but the “magic” starts when adding a title and color. The following code creates two “unique” boxes with defined colors and custom borders:
// First showybox
#showybox(
frame: (
upper-color: red.darken(40%),
lower-color: red.lighten(90%),
border-color: black,
width: 2pt
),
title: "Hello world! - An example"
)[
Hello world!
]
// Second showybox
#showybox(
frame: (
dash: "dotted",
border-color: red.darken(40%)
),
body-style: (
align: center
)
)[
This is an important message!
Be careful outside. There are dangerous bananas!
]
Reference
The showybox()
function can recieve the following parameters:
frame
: A dictionary containing the frame’s propertiestitle-style
: A dictionary containing the title’s stylesbody-styles
: A dictionary containing the body’s stylestitle
: A string used as the title of the showyboxbody
: The content of the showybox
Frame properties
upper-color
: Color used as background color where the title goes (default isblack
)lower-color
: Color used as background color where the body goes (default iswhite
)border-color
: Color used for the showybox’s border (default isblack
)radius
: Showybox’s radius (default is5pt
)width
: Border width of the showybox (default is2pt
)dash
: Showybox’s border style (default issolid
)
Title styles
color
: Text color (default iswhite
)weight
: Text weight (default isbold
)align
: Text align (default isleft
)
Body styles
color
: Text color (default isblack
)align
: Text align (default isleft
)
Known issues
- A
break
property and/orautobreak
functionality is needed to avoid showyboxes’ overflow (when they occupy a full page and there’s lots of text inside them). - A
boxseparator
(a horizontal line inside the showybox) will be needed to split a showybox content in two sections inside the same box. - There’s a slightly thin line in showyboxes that have no borders or dashed borders, instead of white spaces or nothing.
Gallery
Changelog
Version 0.1.1
- Changed package name from colorbox to showybox
- Fixed a spacing bug in encapsulated showyboxes
- Details: When a showybox was encapsulated inside another, the spacing after that showybox was
0pt
, probably due to some “fixes” improved to manage default spacing betweenrect
elements. The issue was solved by avoiding#set
statements and adding a#v(-1.1em)
to correct extra spacing between the titlerect
and the bodyrect
.
- Details: When a showybox was encapsulated inside another, the spacing after that showybox was