summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/tcolorbox/tcbposter.code.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/tcolorbox/tcbposter.code.tex')
-rw-r--r--macros/latex/contrib/tcolorbox/tcbposter.code.tex274
1 files changed, 274 insertions, 0 deletions
diff --git a/macros/latex/contrib/tcolorbox/tcbposter.code.tex b/macros/latex/contrib/tcolorbox/tcbposter.code.tex
new file mode 100644
index 0000000000..057e02b30f
--- /dev/null
+++ b/macros/latex/contrib/tcolorbox/tcbposter.code.tex
@@ -0,0 +1,274 @@
+%% The LaTeX package tcolorbox - version 4.20 (2019/03/02)
+%% tcbposter.code.tex: Code for posters
+%%
+%% -------------------------------------------------------------------------------------------
+%% Copyright (c) 2006-2019 by Prof. Dr. Dr. Thomas F. Sturm <thomas dot sturm at unibw dot de>
+%% -------------------------------------------------------------------------------------------
+%%
+%% This work may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status `author-maintained'.
+%%
+%% This work consists of all files listed in README
+%%
+\tcb@set@library@version{4.20}
+
+\tcbuselibrary{breakable,magazine,skins,fitting}
+
+\newif\iftcb@poster@showframe
+\newif\iftcb@posterbox@sequence
+\newboxarray{tcb@poster}
+
+\def\tcb@poster@compute@poster@boxheight#1#2{%
+ \pgfpointanchor{\tcb@poster@prefix#1}{south}\unskip%
+ \@tempdima\pgf@y%
+ \pgfpointanchor{\tcb@poster@prefix#2}{north}\unskip%
+ \advance \@tempdima by -\pgf@y\relax%
+ \advance \@tempdima by -\tcbposterrowspacing\relax%
+ \advance \@tempdima by -\tcbposterrowspacing\relax%
+ \edef\tcb@poster@boxheight{\the\@tempdima}%
+}
+
+\def\poster@scan@sequence#1 between #2 and #3 then#4\@nil{%
+ \tcb@poster@compute@poster@boxheight{#2}{#3}%
+ \ifundef{\tcb@poster@firstboxheight}{\edef\tcb@poster@firstboxheight{\tcb@poster@boxheight}}{}%
+ \eappto\tcb@poster@breakat{\tcb@poster@boxheight/}%
+ \@tempcnta\numexpr#1\relax%
+ \listeadd\tcb@poster@list{{\tcb@poster@prefix col\@arabic\@tempcnta.west|-\tcb@poster@prefix#2.south}{\tcb@poster@boxheight}}%
+ \ifblank{#4}{}{\poster@scan@sequence#4\@nil}%
+}
+
+\newenvironment{tcb@poster@env}{%
+ \let\posterbox\tcb@poster@box%
+ \let\posterboxenv\tcb@poster@boxenv%
+ \let\endposterboxenv\endtcb@poster@boxenv%
+ \ifundef\tcb@poster@height{%
+ \ifnum\c@tcblayer=0\relax%
+ \def\tcb@poster@height{\textheight}%
+ \else%
+ \ifdim\dimexpr\tcbtextheight>0pt\relax%
+ \def\tcb@poster@height{\tcbtextheight}%
+ \else%
+ \def\tcb@poster@height{0.75\textheight}%
+ \fi%
+ \fi}{}%
+ \tcbset{poster/.cd,poster@poster}%
+ \tcbdimto\tcbposterwidth{\tcb@poster@width}%
+ \tcbdimto\tcbposterheight{\tcb@poster@height}%
+ \tcbdimto\tcbpostercolspacing{\tcb@poster@colspacing}%
+ \tcbdimto\tcbposterrowspacing{\tcb@poster@rowspacing}%
+ \edef\tcbpostercolumns{\the\numexpr\tcb@poster@columns\relax}%
+ \edef\tcbposterrows{\the\numexpr\tcb@poster@rows\relax}%
+ \tcbdimto\tcbpostercolwidth{(\tcbposterwidth+\tcbpostercolspacing)/\tcbpostercolumns-\tcbpostercolspacing}%
+ \tcbdimto\tcbposterrowheight{(\tcbposterheight+\tcbposterrowspacing)/\tcbposterrows-\tcbposterrowspacing}%
+ \begin{tikzpicture}%
+ \path[use as bounding box] (0,0) rectangle (\tcbposterwidth,\tcbposterheight);
+ \node[name=\tcb@poster@prefix poster,at={(0,0)},line width=0mm,inner sep=0mm,outer sep=0mm,draw=none,fill=none,rectangle,
+ above right,minimum width=\tcbposterwidth,minimum height=\tcbposterheight]{};
+ \coordinate (\tcb@poster@prefix top) at (0,\tcbposterheight+\tcbposterrowspacing);
+ \coordinate (\tcb@poster@prefix bottom) at (0,-\tcbposterrowspacing);
+ \coordinate (\tcb@poster@prefix middle) at (0,\the\dimexpr0.5\dimexpr\tcbposterheight\relax);
+ \begin{scope}[every node/.style={inner sep=0pt,outer sep=0,above right,minimum height=\tcbposterheight,minimum width=\tcbpostercolwidth}]%
+ \node (\tcb@poster@prefix col1) at (0,0) {};
+ \@tempcnta 1%
+ \@tempcntb\numexpr\tcbpostercolumns\relax%
+ \@tempdima\dimexpr\tcbpostercolwidth+\tcbpostercolspacing\relax%
+ \@whilenum \@tempcnta<\@tempcntb \do{%
+ \edef\tcb@temp{\tcb@poster@prefix col\@arabic\@tempcnta}%
+ \advance\@tempcnta 1\relax%
+ \node[xshift=\tcbpostercolspacing] (\tcb@poster@prefix col\@arabic\@tempcnta) at (\tcb@temp.south east) {};
+ }%
+ \end{scope}%
+ \begin{scope}[every node/.style={inner sep=0pt,outer sep=0,below right,minimum height=\tcbposterrowheight,minimum width=\tcbposterwidth}]%
+ \node (\tcb@poster@prefix row1) at (0,\tcbposterheight) {};
+ \@tempcnta 1%
+ \@tempcntb\numexpr\tcbposterrows\relax%
+ \@tempdima\dimexpr\tcbposterrowheight+\tcbposterrowspacing\relax%
+ \@whilenum \@tempcnta<\@tempcntb \do{%
+ \edef\tcb@temp{\tcb@poster@prefix row\@arabic\@tempcnta}%
+ \advance\@tempcnta 1\relax%
+ \node[yshift=-\tcbposterrowspacing] (\tcb@poster@prefix row\@arabic\@tempcnta) at (\tcb@temp.south west) {};
+ }%
+ \end{scope}%
+ \iftcb@poster@showframe%
+ \@tempcnta 0%
+ \@tempcntb\numexpr\tcbpostercolumns\relax%
+ \@whilenum \@tempcnta<\@tempcntb \do{%
+ \advance\@tempcnta 1\relax%
+ \edef\tcb@temp{\tcb@poster@prefix col\@arabic\@tempcnta}%
+ \draw[red] (\tcb@temp.north west) node[above right]{col\@arabic\@tempcnta} rectangle (\tcb@temp.south east);
+ }%
+ \@tempcnta 0%
+ \@tempcntb\numexpr\tcbposterrows\relax%
+ \@whilenum \@tempcnta<\@tempcntb \do{%
+ \advance\@tempcnta 1\relax%
+ \edef\tcb@temp{\tcb@poster@prefix row\@arabic\@tempcnta}%
+ \draw[red] (\tcb@temp.north west) node[below left]{row\@arabic\@tempcnta} rectangle (\tcb@temp.south east);
+ }%
+ \gdef\tcb@poster@framelist{}%
+ \fi%
+}{%
+ \iftcb@poster@showframe%
+ \renewcommand*{\do}[1]{%
+ \node[red,fill=white,opacity=0.7,font=\Large] at (\tcb@poster@prefix##1) {##1};}%
+ \dolistloop{\tcb@poster@framelist}%
+ \gdef\tcb@poster@framelist{}%
+ \fi%
+\end{tikzpicture}}
+
+% #1 tcolorbox options
+% #2 position
+% #3 Inhalt
+\newcommand{\tcb@poster@box}[3][]{%
+ \bgroup%
+ \tcbset{posterloc/.cd,#2}%
+ \tcbdimto\tcb@poster@boxwidth{\tcb@poster@span\dimexpr\tcbpostercolwidth+\tcbpostercolspacing\relax-\tcbpostercolspacing}%
+ \iftcb@posterbox@sequence%
+ \begin{pgfinterruptpicture}%
+ \begin{tcolorbox}[tcb@poster@style,width=\tcb@poster@boxwidth,tcb@poster@boxheight,
+ height fixed for=all,#1,
+ enforce breakable,reset box array=tcb@poster,store to box array=tcb@poster]#3\end{tcolorbox}%
+ \end{pgfinterruptpicture}%
+ \def\tcb@poster@boxcount{0}%
+ \renewcommand*{\do}[1]{\edef\tcb@poster@boxcount{\the\numexpr\tcb@poster@boxcount+1\relax}%
+ \node[inner sep=0pt,outer sep=0,tcb@poster@node,name=\tcb@poster@prefix\tcb@poster@boxname\tcb@poster@boxcount] at (\@firstoftwo##1) {%
+ \ifboxarrayempty[tcb@poster]{\tcb@poster@boxcount}%
+ {\begin{tcolorbox}[placeholder,width=\tcb@poster@boxwidth,height=\@secondoftwo##1]\end{tcolorbox}}%
+ {\consumeboxarray[tcb@poster]{\tcb@poster@boxcount}}%
+ };}%
+ \dolistloop{\tcb@poster@list}%
+ \iftcb@poster@showframe%
+ \ifdefstring{\tcb@poster@boxname}{@}{}{%
+ \def\tcb@poster@boxcount{0}%
+ \renewcommand*{\do}[1]{\edef\tcb@poster@boxcount{\the\numexpr\tcb@poster@boxcount+1\relax}%
+ \listxadd\tcb@poster@framelist{\tcb@poster@boxname\tcb@poster@boxcount}}%
+ \dolistloop{\tcb@poster@list}%
+ }%
+ \fi%
+ \else%
+ \begin{pgfinterruptpicture}%
+ \begin{tcolorbox}[tcb@poster@style,width=\tcb@poster@boxwidth,tcb@poster@boxheight,#1,
+ reset box array=tcb@poster,store to box array=tcb@poster]#3\end{tcolorbox}%
+ \end{pgfinterruptpicture}%
+ \node[inner sep=0pt,outer sep=0,tcb@poster@node,name=\tcb@poster@prefix\tcb@poster@boxname] at (\tcb@poster@xpos|-\tcb@poster@ypos)
+ {\consumeboxarray[tcb@poster]{1}};%
+ \iftcb@poster@showframe%
+ \ifdefstring{\tcb@poster@boxname}{@}{}{\listxadd\tcb@poster@framelist{\tcb@poster@boxname}}%
+ \fi%
+ \fi%
+ \egroup%
+}
+
+\newenvironment{tcb@poster@boxenv}[2][]{%
+ \newcommand{\tcb@poster@box@saved}{\posterbox[#1]{#2}{\tcbusetemp}}%
+ \tcbwritetemp}%
+ {\endtcbwritetemp\tcb@poster@box@saved}
+
+\newenvironment{tcbposter@coverage}{}{}
+
+\newenvironment{tcbposter}[1][]{%
+ \tcbposterset{#1}%
+ \begin{tcbposter@coverage}\begin{tcb@poster@env}%
+}{\end{tcb@poster@env}\end{tcbposter@coverage}}
+
+\newcommand{\tcbposterset}[1]{\tcbset{posterset/.cd,#1}}
+
+\tcbset{%
+ poster/.cd,
+ width/.store in=\tcb@poster@width,
+ height/.store in=\tcb@poster@height,
+ colspacing/.store in=\tcb@poster@colspacing,
+ rowspacing/.store in=\tcb@poster@rowspacing,
+ spacing/.style={colspacing={#1},rowspacing={#1}},
+ columns/.store in=\tcb@poster@columns,
+ rows/.store in=\tcb@poster@rows,
+ showframe/.is if=tcb@poster@showframe,
+ prefix/.store in=\tcb@poster@prefix,
+ %
+ width=\linewidth,
+ spacing=4mm,
+ columns=3,
+ rows=4,
+ showframe=false,
+ prefix=TCBPOSTER@,
+}
+
+\tcbset{%
+ posterloc/.cd,
+ name/.store in=\tcb@poster@boxname,
+ column/.code={\edef\tcb@poster@xpos{\tcb@poster@prefix col#1.west}\edef\tcb@poster@orientation{right}},%
+ column*/.code={\edef\tcb@poster@xpos{\tcb@poster@prefix col#1.east}\edef\tcb@poster@orientation{left}},%
+ below/.code={\tcb@posterbox@sequencefalse%
+ \tikzset{tcb@poster@node/.style={below \tcb@poster@orientation,yshift=\the\dimexpr\tcb@poster@yshift-\tcbposterrowspacing\relax,xshift=\tcb@poster@xshift}}%
+ \tcbset{tcb@poster@boxheight/.style={natural height}}%
+ \edef\tcb@poster@ypos{\tcb@poster@prefix#1.south}},
+ above/.code={\tcb@posterbox@sequencefalse%
+ \tikzset{tcb@poster@node/.style={above \tcb@poster@orientation,yshift=\the\dimexpr\tcb@poster@yshift+\tcbposterrowspacing\relax,xshift=\tcb@poster@xshift}}%
+ \tcbset{tcb@poster@boxheight/.style={natural height}}%
+ \edef\tcb@poster@ypos{\tcb@poster@prefix#1.north}},
+ at/.code={\tcb@posterbox@sequencefalse%
+ \tikzset{tcb@poster@node/.style={\tcb@poster@orientation,yshift=\tcb@poster@yshift,xshift=\tcb@poster@xshift}}%
+ \tcbset{tcb@poster@boxheight/.style={natural height}}%
+ \edef\tcb@poster@ypos{\tcb@poster@prefix#1}},
+ between/.code args={#1 and #2}{\tcb@posterbox@sequencefalse%
+ \tikzset{tcb@poster@node/.style={below \tcb@poster@orientation,yshift=\the\dimexpr\tcb@poster@yshift-\tcbposterrowspacing\relax,xshift=\tcb@poster@xshift}}%
+ \edef\tcb@poster@ypos{\tcb@poster@prefix#1.south}%
+ \tcb@poster@compute@poster@boxheight{#1}{#2}%
+ \tcbset{tcb@poster@boxheight/.style={height=\tcb@poster@boxheight}}%
+ },
+ sequence/.code={\tcb@posterbox@sequencetrue%
+ \tikzset{tcb@poster@node/.style={below \tcb@poster@orientation,yshift=\the\dimexpr\tcb@poster@yshift-\tcbposterrowspacing\relax,xshift=\tcb@poster@xshift}}%
+ \undef\tcb@poster@firstboxheight%
+ \def\tcb@poster@breakat{}%
+ \def\tcb@poster@list{}%
+ \poster@scan@sequence #1 then\@nil%
+ \eappto\tcb@poster@breakat{\tcbposterheight}%
+ \tcbset{tcb@poster@boxheight/.style={break at=\tcb@poster@breakat,height=\tcb@poster@firstboxheight}}%
+ },
+ row/.code={\tcb@posterbox@sequencefalse%
+ \tikzset{tcb@poster@node/.style={below \tcb@poster@orientation,yshift=\tcb@poster@yshift,xshift=\tcb@poster@xshift}}%
+ \tcbset{posterloc/fixed height}%
+ \edef\tcb@poster@ypos{\tcb@poster@prefix row#1.north}},
+ %
+ span/.store in=\tcb@poster@span,%
+ row@span/.store in=\tcb@poster@rowspan,%
+ rowspan/.style={row@span=#1,fixed height},%
+ xshift/.store in=\tcb@poster@xshift,%
+ yshift/.store in=\tcb@poster@yshift,%
+ fixed height/.code={\tcbset{tcb@poster@boxheight/.style={height=\tcb@poster@rowspan\dimexpr\tcbposterrowheight+\tcbposterrowspacing\relax-\tcbposterrowspacing}}},%
+ %
+ name=@,
+ column=1,
+ below=top,
+ span=1,
+ row@span=1,
+ xshift=0pt,
+ yshift=0pt,
+}
+
+\tcbposterset{%
+ coverage/.code={\renewtcolorbox{tcbposter@coverage}{%
+ enhanced,frame hidden,sharp corners,boxsep=0pt,boxrule=0pt,
+ top=4mm,bottom=4mm,left=4mm,right=4mm,
+ toptitle=2mm,bottomtitle=2mm,colback=white,#1}},
+ no coverage/.code={\renewenvironment{tcbposter@coverage}{}{}},
+ poster/.code={\tcbset{poster/.cd,poster@poster/.style={#1}}},
+ boxes/.code={\tcbset{tcb@poster@style/.style={nobeforeafter,enhanced standard,#1}}},
+ fontsize/.code={\tcbset{fit fontsize macros}\tcbsetforeverylayer{fit basedim=#1}\normalsize},
+ %
+ poster,boxes
+}
+
+\tcbset{placeholder/.style={enhanced jigsaw,
+ size=small,sharp corners,colframe=red!50!black,
+ interior style={bottom color=red!15!white,top color=blue!15!white},
+ opacityback=0.5,
+ underlay={\draw[red!50!black,line cap=round] (interior.south west)--(interior.north east);
+ \draw[red!50!black,line cap=round] (interior.south east)--(interior.north west);},
+}}%