diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /graphics/awesomebox/awesomebox.sty |
Initial commit
Diffstat (limited to 'graphics/awesomebox/awesomebox.sty')
-rw-r--r-- | graphics/awesomebox/awesomebox.sty | 159 |
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 |