core-book/lib/rpgreadaloud.sty
Joe bellus 7b33fef50e Initial commit
Initial project scaffolding
2025-03-10 18:21:53 -04:00

81 lines
2.3 KiB
TeX

\ExplSyntaxOn
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Environment for read-aloud text.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Standard for every read-aloud text
\DeclareTColorBox {__rpg_read_aloud} {o}
{
before~upper =
{
\bool_if:NT \l__rpg_layout_bool
{
\bool_if:NF \l__rpg_justified_bool
{\RaggedRight}
}
},
code = {\linespread {1.1} },
enhanced~jigsaw,
frame~hidden,
boxrule = 0pt,
breakable,
enhanced,
before~skip = 13pt plus 4pt minus 4pt,
boxsep = 8pt,
top = 0pt,
left = 0pt,
right = 0pt,
bottom = 0pt,
sharp~corners,
parbox = false,
borderline~west = {1pt} {-0.5pt} {titlered},
borderline~east = {1pt} {-0.5pt} {titlered},
fontupper = \RpgFontReadAloud,
fontlower = \RpgFontReadAloud,
overlay =
{
\foreach\n ~ in ~ { north~east, north~west, south~east, south~west }
{\draw [ titlered, fill = titlered ] ( frame.\n ) circle (1.5pt); };
},
after~skip = 13pt plus 4pt minus 4pt,
#1,
}
% Extra key for controlling the color of the title and the background
\keys_define:nn { rpg / read_aloud }
{
color .tl_set:N = \l__rpg_read_aloud_color_tl,
color .initial:n = readaloudcolor,
color .value_required:n = true,
}
% This function, through its variant, forces the expansion of the tcb keys
% passed to the environment by the user before it invokes the tcolorbox
\cs_new_protected:Nn \__rpg_start_read_aloud:nn
{
\begin {__rpg_read_aloud} [ #1, #2 ]
}
\cs_generate_variant:Nn \__rpg_start_read_aloud:nn { nV }
% The RpgReadAloud environment
% #1 - keys. We handle the custom color key before passing other keys on
\NewDocumentEnvironment {RpgReadAloud} {o}
{
\group_begin:
\keys_set_known:nnN { rpg / read_aloud } {#1} \l_tmpa_tl
\str_if_eq:VnT \l_tmpa_tl { -NoValue- }
{ \tl_set_eq:NN \l_tmpa_tl \c_empty_tl }
\__rpg_start_read_aloud:nV
{
colback = \l__rpg_read_aloud_color_tl,
}
{\l_tmpa_tl}
}
{
\end {__rpg_read_aloud}
\group_end:
}