summaryrefslogtreecommitdiff
path: root/graphics/awesomebox/awesomebox.sty
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /graphics/awesomebox/awesomebox.sty
Initial commit
Diffstat (limited to 'graphics/awesomebox/awesomebox.sty')
-rw-r--r--graphics/awesomebox/awesomebox.sty159
1 files changed, 159 insertions, 0 deletions
diff --git a/graphics/awesomebox/awesomebox.sty b/graphics/awesomebox/awesomebox.sty
new file mode 100644
index 0000000000..75bc74e6e1
--- /dev/null
+++ b/graphics/awesomebox/awesomebox.sty
@@ -0,0 +1,159 @@
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{awesomebox}[2019/07/27 v0.6]
+
+% Awesome Box has been written by Étienne Deparis and is released under
+% the WTFPL (http://www.wtfpl.net/txt/copying/).
+% A copy of this license is distributed in this package.
+%
+% Contributors:
+% v0.2: Vincent Goulet https://github.com/vigou3
+% v0.3: Gilbert Fuerer https://github.com/foreachthing
+% * Remove xelatex/luatex requirement and add pdflatex compatibility
+% v0.4: Marcel Krüger https://github.com/zauguin
+% * Fontawesome5 compatibility
+% Gilbert Fuerer
+% * Custom vertical rule color
+% v0.5: Georger Araújo https://github.com/georgerbr
+% * Horizontal rules at top and bottom, title
+% v0.6: Vincent Goulet https://github.com/vigou3
+% * Improving table cell rendering
+
+% https://ctan.org/pkg/fontawesome5
+\RequirePackage{fontawesome5}
+
+% Compatibility with old version of this package
+\def\abIconCheck{\faCheck}
+\def\abIconInfoCircle{\faInfoCircle}
+\def\abIconFire{\faFire}
+\def\abIconExclamationCircle{\faExclamationCircle}
+\def\abIconExclamationTriangle{\faExclamationTriangle}
+\def\abIconCogs{\faCogs}
+\def\abIconThumbsUp{\faThumbsUp}
+\def\abIconThumbsDown{\faThumbsDown}
+\def\abIconCertificate{\faCertificate}
+\def\abIconLightBulb{\faLightbulb[regular]}
+\def\abIconTwitter{\faTwitter}
+\def\abIconGithub{\faGithub}
+
+% https://ctan.org/pkg/xcolor
+\RequirePackage{xcolor}
+% Some basic colors
+\definecolor{abnote}{RGB}{25,64,122}
+\definecolor{abcaution}{RGB}{188,50,0}
+\definecolor{abwarning}{RGB}{188,103,0}
+\definecolor{abimportant}{RGB}{188,0,0}
+\definecolor{abvrulecolor}{RGB}{221,221,216}
+
+% Customizable length
+\newlength{\aweboxleftmargin}
+\newlength{\aweboxcontentwidth}
+\newlength{\aweboxvskip}
+\setlength{\aweboxvskip}{5mm}
+\newlength{\aweboxsignraise}
+\setlength{\aweboxsignraise}{-5mm}
+\newlength{\aweboxrulewidth}
+\setlength{\aweboxrulewidth}{2pt}
+
+\AtBeginDocument{%
+ \setlength{\aweboxleftmargin}{0.12\linewidth}%
+ \setlength{\aweboxcontentwidth}{0.88\linewidth}}
+
+\RequirePackage{array}
+
+% To allow for more than one optional argument
+\RequirePackage{xparse}
+
+% Horizontal rule definitions used with second optional argument [hrule]
+\def\abShortLine{\cline{2-2}}
+\def\abLongLine{\hline}
+
+% The following commands are used to adjust and restore awesome boxes
+% content width in respect to the current environment (e.g. lists).
+\RequirePackage{ifthen}
+\newlength{\aweboxlinewidthvar}
+\setlength{\aweboxlinewidthvar}{0pt}
+\newlength{\aweboxlinewidthref}
+\AtBeginDocument{\setlength{\aweboxlinewidthref}{\linewidth}}
+\newcommand{\awesomeboxadjustcontentwidth}{%
+ \ifthenelse{\lengthtest{\linewidth=\aweboxlinewidthref}}{}{%
+ \setlength{\aweboxlinewidthvar}{\dimexpr\aweboxlinewidthref-\linewidth}%
+ \setlength{\aweboxcontentwidth}{\dimexpr\aweboxcontentwidth-\aweboxlinewidthvar}}}%
+ %\aweboxdebug}}
+\newcommand{\awesomeboxrestorecontentwidth}{%
+ \ifthenelse{\lengthtest{\linewidth=\textwidth}}{}{%
+ \setlength{\aweboxcontentwidth}{\dimexpr\aweboxcontentwidth+\aweboxlinewidthvar}%
+ \setlength{\aweboxlinewidthvar}{0pt}}}
+
+% Commands API
+% \awesomebox[vrulecolor][hrule][title]{vrulewidth}{icon}{iconcolor}{content}
+\NewDocumentCommand \awesomebox { O{abvrulecolor} O{} o m m m +m }{%
+ {\vskip \aweboxvskip}\noindent\awesomeboxadjustcontentwidth%
+ \begin{tabular}%
+ {@{}>{\centering\arraybackslash}%
+ p{\aweboxleftmargin}@{}!{\color{#1}\vrule width #4}%
+ p{\dimexpr\aweboxcontentwidth-#4-\tabcolsep}@{}}
+ \IfValueTF {#3}
+ { & #3 \\ #2 \raisebox{\aweboxsignraise}{\textcolor{#6}{\Huge#5}} & #7 \\ #2}
+ { #2 \raisebox{\aweboxsignraise}{\textcolor{#6}{\Huge#5}} & #7 \\ #2}
+ \end{tabular}{\vskip \aweboxvskip}\awesomeboxrestorecontentwidth}
+
+\newcommand{\notebox}[1]{%
+ \awesomebox[abnote]{\aweboxrulewidth}{\abIconInfoCircle}{abnote}{#1}}
+
+\newcommand{\tipbox}[1]{%
+ \awesomebox{\aweboxrulewidth}{\abIconLightBulb}{black}{#1}}
+
+\newcommand{\warningbox}[1]{%
+ \awesomebox[abwarning]{\aweboxrulewidth}{\abIconExclamationTriangle}{abwarning}{#1}}
+
+\newcommand{\cautionbox}[1]{%
+ \awesomebox[abcaution]{\aweboxrulewidth}{\abIconFire}{abcaution}{#1}}
+
+\newcommand{\importantbox}[1]{%
+ \awesomebox[abimportant]{\aweboxrulewidth}{\abIconExclamationCircle}{abimportant}{#1}}
+
+% Environments API
+% \begin{awesomeblock}[vrulecolor][hrule][title]{vrulewidth}{icon}{iconcolor}
+% content
+% \end{awesomeblock}
+\NewDocumentEnvironment{awesomeblock}{ O{abvrulecolor} O{} o m m m }
+{{\vskip \aweboxvskip}\noindent\awesomeboxadjustcontentwidth%
+ \begin{tabular}%
+ {@{}>{\centering\arraybackslash}%
+ p{\aweboxleftmargin}@{}!{\color{#1}\vrule width #4}%
+ p{\dimexpr\aweboxcontentwidth-#4-\tabcolsep}@{}}
+ \IfValueTF {#3}
+ { & #3 \\ #2 \raisebox{\aweboxsignraise}{\textcolor{#6}{\Huge#5}} &}
+ { #2 \raisebox{\aweboxsignraise}{\textcolor{#6}{\Huge#5}} &}}
+{\\ #2 \end{tabular}{\vskip \aweboxvskip}\awesomeboxrestorecontentwidth}
+
+\newenvironment{noteblock}%
+{\begin{awesomeblock}[abnote]{\aweboxrulewidth}{\abIconInfoCircle}{abnote}}
+ {\end{awesomeblock}}
+
+\newenvironment{tipblock}%
+{\begin{awesomeblock}{\aweboxrulewidth}{\abIconLightBulb}{black}}
+ {\end{awesomeblock}}
+
+\newenvironment{warningblock}%
+{\begin{awesomeblock}[abwarning]{\aweboxrulewidth}{\abIconExclamationTriangle}{abwarning}}
+ {\end{awesomeblock}}
+
+\newenvironment{cautionblock}%
+{\begin{awesomeblock}[abcaution]{\aweboxrulewidth}{\abIconFire}{abcaution}}
+ {\end{awesomeblock}}
+
+\newenvironment{importantblock}%
+{\begin{awesomeblock}[abimportant]{\aweboxrulewidth}{\abIconExclamationCircle}{abimportant}}
+ {\end{awesomeblock}}
+
+\newcommand{\aweboxdebug}{%
+ \typeout{**************************}%
+ \typeout{Line width: \the\linewidth}%
+ \typeout{Reference line width: \the\aweboxlinewidthref\space(text width: \the\textwidth)}%
+ \typeout{Width difference: \the\aweboxlinewidthvar}%
+ \typeout{Margin width: \the\aweboxleftmargin}%
+ \typeout{Content width: \the\aweboxcontentwidth}%
+ \typeout{**************************}}
+
+\endinput