Showybox's Manual
Showybox's Manual
Showybox's Manual
1
Contents
1. Introduction .................................................................................................. 3
2. Usage ........................................................................................................... 3
3. Parameters ................................................................................................... 3
3.1. Title string content ............................................................................ 4
3.2. Footer string content ......................................................................... 4
3.3. Frame dictionary ................................................................................. 5
3.4. Title style dictionary ............................................................................ 8
3.5. Boxed style dictionary ......................................................................... 9
3.6. Body style dictionary ......................................................................... 11
3.7. Footer style dictionary ....................................................................... 13
3.8. Separator properties ( sep ) dictionary ................................................. 15
3.9. Shadow properties dictionary ............................................................. 17
3.10. Width relative-length ...................................................................... 18
3.11. Align alignment ................................................................................. 18
3.12. Breakable boolean ............................................................................. 18
3.13. Spacing, above, and below relative-length ........................................ 18
4. Separators .................................................................................................. 19
5. Encapsulation .............................................................................................. 19
2
1. Introduction
Showybox is a Typst package for creating colorful and customizable boxes, similar as
tcolorbox for LaTeX users.
Currently, Showybox is still on developement, and all the code can be found at its
GitHub repository here. New features are welcome. So, if you have an idea that would
improve this package, go on and send us the code as a Pull Request.
2. Usage
To use this library through the Typst package manager (for Typst 0.6.0 or greater), write
#import "@preview/showybox:2.0.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 the
squared brackets [] .
By default a showybox with these properties will be created:
• No title
1 #import "@preview/showybox:2.0.1": showybox
• No shadow
2
• Not breakable 3 #showybox()[This is a simple showybox with
• Black borders the properties said before :)]
• White background
• 5pt of border radius
This is a simple showybox with the properties said
• 1pt of border thick-
before :)
ness
3. Parameters
In version 2.0.1 all the parameters that the showybox() function can receive are shown
below:
showybox(
title: string content
footer: string content
frame: dictionary
title-style: dictionary
body-style: dictionary
footer-style: dictionary
sep: dictionary
shadow: dictionary none
width: relative-length
align: alignment 2d-alignment
3
breakable: boolean
spacing: relative-length
spacing: relative-length
above: relative-length
below: relative-length
.. body
) -> body
The usage and posible values of all the parameters are listed below.
When it’s not empty, correponds to a string or a content used as the title of the
showybox.
Default value is "" (empty string)
When it’s not empy, corresponds to a string or a content used as the footer of the
showybox.
Default is "" (empty string ).
1 #showybox(
2 title: "Hi there! I'm Mr. Title",
3 footer: "And finally I'm Mr. Footer"
4 )[And I'm Mrs. Body]
4
3.3. Frame dictionary
This parameter contains all options that are useful for setting a showybox’s frame prop-
erties. The frame contains the title,the body and the footer of the showybox. It even
includes the showybox borders! Frame’s dictionary options are listed below:
…
frame: (
title-color: color
body-color: color
footer-color: color
border-color: color
title-color color
body-color color
The color that is used as background where the showybox’s body goes.
Default is white .
footer-color color
border-color color
5
It’s the color used for the frame’s borders and the boxed-title borders. It’s independent
of title-color , body-color and footer-color , so maybe you would want to use sim-
ilar colors with them.
Default is black .
1 #showybox(
2 title: "Stokes' theorem",
3 frame: (
4 border-color: blue,
5 title-color: blue.lighten(30%),
6 body-color: blue.lighten(95%),
7 footer-color: blue.lighten(80%)
8 ),
9 footer: "Information extracted from a well-known public encyclopedia"
10 )[
11 Let $Sigma$ be a smooth oriented surface in $RR^3$ with boundary $diff
Sigma equiv Gamma$. If a vector field $bold(F)(x,y,z)=(F_x (x,y,z), F_y
(x,y,z), F_z (x,y,z))$ is defined and has continuous first order partial
derivatives in a region containing $Sigma$, then
12
13 $ integral.double_Sigma (bold(nabla) times bold(F)) dot bold(Sigma) =
integral.cont_(diff Sigma) bold(F) dot dif bold(Gamma) $
14 ]
Stokes' theorem
Let Σ be a smooth oriented surface in ℝ3 with boundary 𝜕Σ ≡ Γ. If a vector field
𝑭 (𝑥, 𝑦, 𝑧) = (𝐹𝑥 (𝑥, 𝑦, 𝑧), 𝐹𝑦 (𝑥, 𝑦, 𝑧), 𝐹𝑧 (𝑥, 𝑦, 𝑧)) is defined and has continuous first
order partial derivatives in a region containing Σ, then
∬ (𝛁 × 𝑭 ) ⋅ 𝚺 = ∮ 𝑭 ⋅ d𝚪
Σ 𝜕Σ
Indicates how much round are the borders of the frame. It sets all the border radii to-
gether if a relative-length passed, or individually if a dictionary is given.
It excludes the boxed-title border radii (if present). Their radius is set in boxed-style
dictionary inside title-style .
Default is 5pt .
thickness length dictionary
6
It excludes the thickness of any separator located inside the box (their thickness is set
in sep property).
Default is 1pt .
dash string
Default is "solid" .
inset, title-inset, body-inset, and footer-inset relative-length
dictionary
1 #showybox(
2 frame: (
3 border-color: red.darken(30%),
4 title-color: red.darken(30%),
5 radius: 0pt,
6 thickness: 2pt,
7 body-inset: 2em,
8 dash: "densely-dash-dotted"
9 ),
10 title: "Gauss's Law"
11 )[
12 The net electric flux through any hypothetical closed surface is equal
to $1/epsilon_0$ times the net electric charge enclosed within that
closed surface. The closed surface is also referred to as Gaussian
surface. In its integral form:
13
14 $ Phi_E = integral.surf_S bold(E) dot dif bold(A) = Q/epsilon_0 $
15 ]
7
Gauss's Law
The net electric flux through any hypothetical closed surface is equal to 𝜀1
0
times the net electric charge enclosed within that closed surface. The closed
surface is also referred to as Gaussian surface. In its integral form:
𝑄
Φ𝐸 = ∯ 𝑬 ⋅ d𝑨 =
𝑆
𝜀0
This parameter contains all options that are useful for setting showybox’s title prop-
erties. Despite you can set some of this properties while setting title parameter, it
becomes a useful option while making several showyboxes with similar styles.
…
title-style: (
color: color
color color
Title’s font weight. It can be an integer between 100 and 900 , or a predefined weight
name ( "thin" , "extralight" , "light" , "regular" , "medium" , "semibold" , "bold" ,
"extrabold" and "black" ).
Default is "regular" .
align alignment 2d-alignment
8
Default is left .
sep-thickness length
How much is the thickness of the separator line that is between the title and the body.
Default is 1pt .
1 #showybox(
2 title-style: (
3 weight: 900,
4 color: red.darken(40%),
5 sep-thickness: 0pt,
6 align: center
7 ),
8 frame: (
9 title-color: red.lighten(80%),
10 border-color: red.darken(40%),
11 thickness: (left: 1pt),
12 radius: 0pt
13 ),
14 title: "Carnot cycle's efficency"
15 )[
16 Inside a Carnot cycle, the efficiency $eta$ is defined to be:
17
18 $ eta = W/Q_H = frac(Q_H + Q_C, Q_H) = 1 - T_C/T_H $
19 ]
If it’s not none (i.e. it’s a dictionary ), indicates that the title must be placed as a
“floating box” around the top side of the showybox’s body.
Further details are present in Section 3.5
Default is none .
…
title-style: (
…,
9
boxed-style (
anchor: dictionary
offset: dictionary
radius: relative-length dictionary
),
…
),
…
anchor dictionary
A dictionary with keys x and y indicating where to place the anchor of the boxed-
title. The possible values for each direction are listed below:
For xanchor:
• left : Set the anchor to the left side of the boxed-title.
• center : Set the anchor to the center of the horizontal center of the boxed-title.
• right : Set the anchor to the right side of the boxed-title.
For yanchor:
• top : Set the anchor to the top of the boxed-title.
• horizon : Set the anchor to the vertical center of the boxed-title.
• bottom : Set the anchor to the bottom of the boxed-title.
A dictionary with keys x and y indicating how much to offset the boxed-title in x
and y directions.
Default is (x: 0pt, y: 0pt) .
Observation
By default, the boxed-title has a 1em “invisible-offset” (it’s not set via offset
property) at both left and right sides. This is made for aesthetic purposes, so the
boxed-title will look nicer by default.
Additionally, the boxed-title never will have the full width of the showybox’s main
container, because otherwise it’ll look like a “strange” version of default titles,
loosing the “floating” illusion.
10
Radius of the boxed-title. It is applied to all corners simultaneously if a
relative-length is given, or it’s applied individually to each of them according to a
dictionary keys.
Default is 5pt .
1 #showybox(
2 title-style: (
3 boxed-style: (
4 anchor: (
5 x: center,
6 y: horizon
7 ),
8 radius: (top-left: 10pt, bottom-right: 10pt, rest: 0pt),
9 )
10 ),
11 frame: (
12 title-color: green.darken(40%),
13 body-color: green.lighten(80%),
14 footer-color: green.lighten(60%),
15 border-color: green.darken(60%),
16 radius: (top-left: 10pt, bottom-right: 10pt, rest: 0pt)
17 ),
18 title: "Clairaut's theorem",
19 footer: text(size: 10pt, weight: 600, emph("This will be useful every
time you want to interchange partial derivatives in the future."))
20 )[
21 Let $f: A arrow RR$ with $A subset RR^n$ an open set such that its
cross derivatives of any order exist and are continuous in $A$. Then for
any point $(a_1, a_2, ..., a_n) in A$ it is true that
22
23 $ frac(diff^n f, diff x_i ... diff x_j)(a_1, a_2, ..., a_n) =
frac(diff^n f, diff x_j ... diff x_i)(a_1, a_2, ..., a_n) $
24 ]
Clairaut's theorem
Let 𝑓 : 𝐴 → ℝ with 𝐴 ⊂ ℝ𝑛 an open set such that its cross derivatives of any order
exist and are continuous in 𝐴. Then for any point (𝑎1 , 𝑎2 , …, 𝑎𝑛 ) ∈ 𝐴 it is true that
𝜕𝑛𝑓 𝜕𝑛𝑓
(𝑎1 , 𝑎2 , …, 𝑎𝑛 ) = (𝑎 , 𝑎 , …, 𝑎𝑛 )
𝜕𝑥𝑖 …𝜕𝑥𝑗 𝜕𝑥𝑗 …𝜕𝑥𝑖 1 2
This will be useful every time you want to interchange partial derivatives in the future.
This parameter contains all options that are useful for setting general-style properties
for the showybox’s body.
11
…
body-style: (
color: color
color color
1 #showybox(
2 body-style: (
3 align: center,
4 color: red.darken(20%)
5 ),
6 frame: (
7 body-color: yellow.lighten(60%),
8 title-color: red.darken(20%),
9 thickness: 0pt,
10 body-inset: (y: 1em)
11 ),
12 title-style: (
13 sep-thickness: 0pt,
14 color: yellow.lighten(80%),
15 align: center
16 ),
17 width: 70%,
18 align: center,
19 title: "That is the question"
20 )[
21 To be, or not to be, that is the question: \
22 Whether 'tis nobler in the mind to suffer \
23 The slings and arrows of outrageous fortune, \
24 Or to take Arms against a Sea of troubles, \
25 And by opposing end them: to die, to sleep \
26 No more; and by a sleep, to say we end \
27 The heart-ache, and the thousand natural shocks \
12
28 That Flesh is heir to? 'Tis a consummation \
29 Devoutly to be wished. To die, to sleep, \
30 To sleep, perchance to Dream...
31 ]
This parameter contains all options that are useful for setting showybox’s footer prop-
erties. Despite you can set some of this properties while setting footer parameter, it
becomes a useful option while making several showyboxes with similar styles.
…
footer-style: (
color: color
color color
Footer’s font weight. It can be an integer between 100 and 900 , or a predefined weight
name ( "thin" , "extralight" , "light" , "regular" , "medium" , "semibold" , "bold" ,
"extrabold" and "black" ).
13
Default is "regular" .
align alignment 2d-alignment
How much is the thickness of the separator line that is between the footer and the body.
Default is 1pt .
1 #showybox(
2 footer-style: (
3 sep-thickness: 0pt,
4 align: right,
5 color: black
6 ),
7 title: "Divergence theorem",
8 footer: [
9 In the case of $n=3$, $V$ represents a volumne in three-dimensional
space, and $diff V = S$ its surface
10 ]
11 )[
12 Suppose $V$ is a subset of $RR^n$ which is compact and has a piecewise
smooth boundary $S$ (also indicated with $diff V = S$). If $bold(F)$ is a
continuously differentiable vector field defined on a neighborhood of
$V$, then:
13
14 $ integral.triple_V (bold(nabla) dot bold(F)) dif V = integral.surf_S
(bold(F) dot bold(hat(n))) dif S $
15 ]
Divergence theorem
Suppose 𝑉 is a subset of ℝ𝑛 which is compact and has a piecewise smooth bound-
ary 𝑆 (also indicated with 𝜕𝑉 = 𝑆). If 𝑭 is a continuously differentiable vector field
defined on a neighborhood of 𝑉 , then:
̂ d𝑆
∭ (𝛁 ⋅ 𝑭 ) d𝑉 = ∯ (𝑭 ⋅ 𝒏)
𝑉 𝑆
14
3.8. Separator properties ( sep ) dictionary
This parameter contains all options that are used for setting all the separator’s styles
of your showybox. To learn more about how to use separators, see Section 4.
…
sep: (
thickness: length
dash: string
gutter: relative-length
),
…
thickness length
The size of the gutter space above and below the separator.
Default is 0.65em .
dash string
Default is "solid" .
1 #showybox(
2 sep: (
3 thickness: 0.5pt,
4 dash: "loosely-dashed"
5 ),
6 title: "Coordinate systems"
7 )[
8 *Cartesian coordinate system*
9
10 A Cartesian coordinate system for a three-dimensional space consists of
an ordered triplet of lines (the axes) that go through a common point
(the origin), and are pair-wise perpendicular.
11
15
12 A way to represent a point $r$ is using the unit vectors ($bold(i)$,
$bold(j)$, and $bold(k)$) is:
13
14 $ bold(r) = x bold(i) + y bold(j) + z bold(k) $
15 ][
16 *Spherical coordinate system*
17
18 A spherical coordinate system is a coordinate system for three-
dimensional space where the position of a point is specified by three
numbers: the radial distance of that point from a fixed origin ($r$); its
polar angle measured from a fixed polar axis or zenith direction
($theta$); and the azimuthal angle of its orthogonal projection on a
reference plane that passes through the origin and is orthogonal to the
fixed axis, measured from another fixed reference direction on that plane
19 ($phi$).
20
The position of a point or particle (although better written as a
21 triple $(r, theta, phi)$ can be written as:
22
23 $ bold(r) = r bold(hat(r)) $
]
Coordinate systems
Cartesian coordinate system
A Cartesian coordinate system for a three-dimensional space consists of an or-
dered triplet of lines (the axes) that go through a common point (the origin), and
are pair-wise perpendicular.
A way to represent a point 𝑟 is using the unit vectors (𝒊, 𝒋, and 𝒌) is:
𝒓 = 𝑥𝒊 + 𝑦𝒋 + 𝑧𝒌
16
3.9. Shadow properties dictionary
The given dictionary contains all properties that are used for showing a showybox
with a shadow. When this property is absent (i.e. it’s not set or set as none ), the
showybox has no shadow.
…
shadow: (
color: color
color color
Shadow’s color.
Default is luma(128) .
offset relative-length dictionary
Default is 4pt .
1 #showybox(
2 shadow: (
3 color: yellow.lighten(55%),
4 offset: 3pt
5 ),
6 frame: (
7 title-color: red.darken(30%),
8 border-color: red.darken(30%),
9 body-color: red.lighten(80%)
10 ),
11 title: "Coulomb's law"
12 )[
13 Coulomb's law in vector form states that the electrostatic force
$bold(F)$ experienced by a charge $q_1$ at position $bold(r)$ in the
vecinity of another charge $q_2$ at position $bold(r')$, in a vacuum is
14 equal to
15
$ bold(F) = frac(q_1 q_2, 4 pi epsilon_0) frac(bold(r) - bold(r'),
16 bar.v bold(r) - bold(r') bar.v^3) $
]
17
Coulomb's law
Coulomb’s law in vector form states that the electrostatic force 𝑭 experienced by
a charge 𝑞1 at position 𝒓 in the vecinity of another charge 𝑞2 at position 𝒓′ , in a
vacuum is equal to
𝑞1 𝑞2 𝒓 − 𝒓′
𝑭 =
4𝜋𝜀0 | 𝒓 − 𝒓′ |3
How to align showybox inside it’s container (useful for showyboxes with width < 100% ).
Default is left .
This parameter indicates whether a showybox can or cannot break if it reaches an end
of page or the end of its container.
Default is false
spacing sets how much space to insert above and below the showybox, unless above
or below are given.
By default it’s the block ’s default spacing in your document.
1 #block(
2 height: 4.5cm,
3 inset: 1em,
4 fill: luma(250),
5 stroke: luma(200),
6 columns(2)[
7 #showybox(
8 title-style: (
9 boxed-style: (
10 anchor: (x: center, y: horizon)
11 )
12 ),
13 breakable: true,
14 width: 90%,
15 align: center,
16 title: "Newton's second law"
18
17 )[
18
If a body of mass $m$ experiments an acceleration $bold(a)$ due to
a net force $sum bold(F)$, this acceleration is related to the mass and
force by the following equation:
19
20
$ bold(a) = frac(sum bold(F), m) $
21
]
22
]
23
)
4. Separators
Sometimes you would wish to split a content into two or more sections inside the same
showybox. The showybox() function allows you to do that by putting several content
elements separated by commas inside the parenthesis () of the function. Each indi-
vidual content element will be a separated section inside the showybox.
Alternatively, you can put adjacent content elements one after another next to the
closing parenthesis of the function. Both cases generates the same outcome.
5. Encapsulation
Showyboxes can be put inside another showyboxes! As you may think, it’s easy to do
it: just put a showybox inside the body of another, and ta-da!
1 #showybox(
2 title: "Parent container",
3 lorem(10),
4 columns(2)[
5 #showybox(
6 title-style: (boxed-style: (:)),
7 title: "Child 1",
8 lorem(10)
9 )
10 #colbreak()
11 #showybox(
12 title-style: (boxed-style: (:)),
13 title: "Child 2",
19
14 lorem(10)
15
)
16
]
17
)
Parent container
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do.
Child 1 Child 2
Lorem ipsum dolor sit amet, con- Lorem ipsum dolor sit amet, con-
sectetur adipiscing elit, sed do. sectetur adipiscing elit, sed do.
20