/* betterposter originally developed by Mike Morrison https://osf.io/ef53g/ */ #import "../utils/scripts.typ": * // Different behavior than for basic.typ #let theme( primary-color: rgb(28,55,103), // Dark blue background-color: white, accent-color: rgb(243,163,30), // Yellow titletext-color: black, titletext-size: 2em, body, ) = { set page( margin: 0pt, ) color-primary.update(primary-color) color-background.update(background-color) color-accent.update(accent-color) color-titletext.update(color-titletext => titletext-color) size-titletext.update(size-titletext => titletext-size) body } #let focus-box( footer-kwargs: none, body ) = { focus-content.update(focus-body => body) } #let normal-box( color: none, body ) = { context[ #let primary-color = color-primary.get() #let accent-color = color-accent.get() #if color != none [ #let accent-color = color #box( stroke: none, //primary-color+0.2em, width: 100%, fill: accent-color, inset: 0%, [ #box( inset: (top: 4%, left: 4%, right: 4%, bottom: 4%), body ) ] ) ] else [ // #let accent-color = color #box( stroke: none, //primary-color+0.0625em, width: 100%, fill: accent-color, inset: 0%, [ #box( inset: (top: 4%, left: 4%, right: 4%, bottom: 4%), body ) ] ) ] ] } #let poster-content( col: 1, title: none, subtitle: none, authors: none, affiliation: none, left-logo: none, right-logo: none, textcolor: black, body )={ context[ #let edge-color = color-background.get() #let center-color = color-primary.get() #let titletext-color = color-titletext.get() #let titletext-size = size-titletext.get() #let current-title = context title-content.get() #let current-subtitle = context subtitle-content.get() #let current-author = context author-content.get() #let current-affiliation = context affiliation-content.get() #let current-focus = context focus-content.get() #let current-footer = context footer-content.get() // Table captions go above #show figure.where(kind:table) : set figure.caption(position:top) #show figure.caption.where(kind:image): it => [ // #context it.counter.display(it.numbering) // Since the #body is called twice (+1?), subtract half of the total figures to get the correct number Fig. #let last-counter = it.counter.final() #context {it.counter.get().at(0) - (last-counter.at(0)-1)/2}: #it.body ] #show figure.caption.where(kind:table): it => [ Table #let last-counter = it.counter.final() #context {it.counter.get().at(0) - (last-counter.at(0)-1)/2}: #it.body ] // First, need body (hidden) to update header and footer #block(height: 0pt, hide[#body]) #v(0pt, weak: true) #grid( columns: (12.5/52*100%, 28.5/52*100%, 11/52*100%), rows: (100%), // Left = title and main text [ #grid( columns: (100%), rows: (auto, 1fr), [ #box( stroke: none, fill: edge-color, // height: 100%, width: 100%, inset: 6%, [ #align(top+left)[ \ #set text(size: titletext-size/(7/5), fill: titletext-color, ) *#current-title* #current-subtitle \ // i.e. (6/7 = 0.857), which converts 1.4 -> 1.2, or (5/7 = 714) 1.4 -> 1.0 #set text(size: 0.714em) \ #current-author \ #current-affiliation ] ] ) #v(0pt, weak: true) ], [ #align(top+left)[ #box( inset: 6%, fill: edge-color, columns(col)[ #body ] ) ] ] ) ], // Center = focus box [ #box( height: 100%, width: 100%, inset: 10%, fill: center-color, align(left+horizon)[ #set text(size: 2em, fill: white) #current-focus ] ) ], // Right = declarations and affiliation [ #box( stroke: none, fill: edge-color, height: 100%, width: 100%, inset: 6%, align(bottom+left)[#current-footer] ) ] ) ] }