new headre emphasis

This commit is contained in:
Marc Wäckerlin
2026-04-30 19:43:03 +02:00
parent 4c8a24fcf4
commit 9cebbd80db
19 changed files with 134 additions and 5 deletions
+13 -1
View File
@@ -157,6 +157,7 @@ Note: direct commands like `\paperwidth{...}` or `\color{...}` would clash with
- `header` / `noheader`: show/hide top name block + separator line, default `header`
- `qr` / `noqr`: show/hide QR block, default `qr`
- `layout=`: `standard` (default) or `centered`
- `headeremphasis=`: `person` (default), `company`, or `balanced`
- `rightalign` / `leftalign`: text alignment, default `rightalign`
- `iconleft` / `iconright`: icon side, default `iconleft`
- `fill` / `nofill`: fill space between icon and text, default `fill`
@@ -199,6 +200,7 @@ What Influences What (Standard Layout)
- `paperwidth/paperheight/contentwidth/contentheight/padding`: define the outer geometry of the whole card.
- `header/noheader`: enables/disables the complete top block (name/logo/company line + separator line).
- `headeremphasis=person|company|balanced`: controls relative visual weight in the header (`person`: name larger, `company`: company line larger, `balanced`: same size).
- `logo` + `logoheight`: affects header composition and reserved vertical space.
- `company[height=...]` / `companylogo[height=...]`: affects second header line and reserved space.
- `textwidth` and `qrwidth`: define horizontal split of body columns.
@@ -304,7 +306,7 @@ Recognized Commands
### Command-Style Setters for Layout Options
- geometry: `\setpaperwidth`, `\setpaperheight`, `\setcontentwidth`, `\setcontentheight`, `\setpadding`, `\setcutdist`, `\setcutlen`
- layout/typography: `\setfontsize`, `\settextwidth`, `\setqrwidth`, `\setqreclevel`, `\setqrlogoscale`, `\setqrlogoborder`, `\setlogoheight`, `\setlayout`
- layout/typography: `\setfontsize`, `\settextwidth`, `\setqrwidth`, `\setqreclevel`, `\setqrlogoscale`, `\setqrlogoborder`, `\setlogoheight`, `\setlayout`, `\setheaderemphasis`
- booleans (`true`/`false`): `\setcrlf`, `\setaddress`, `\sethint`, `\seticon`, `\setrightalign`, `\seticonleft`, `\setfill`, `\setqrfirst`, `\setheader`, `\setqr`, `\sethttps`
- colors/language/format: `\setlang`, `\setcardcolor`, `\setqrcolor`, `\setcountryformat`, `\setbgscale`, `\setbgopacity`, `\setqrbgopacity`
- convenience toggles: `\noheader`, `\withheader`, `\noqr`, `\withqr`, `\standardlayout`, `\centeredlayout`
@@ -360,6 +362,16 @@ Equivalent using setter commands:
\drawcard
```
Header emphasis example:
```latex
\cardsetup{headeremphasis=company}
% or:
\setheaderemphasis{company}
% optional short alias:
\headeremphasis{balanced}
```
If you want to keep most data and only remove selected fields:
```latex
+20 -4
View File
@@ -53,6 +53,7 @@
\DeclareComplementaryOption{www}{https}
\DeclareStringOption[standard]{layout} % standard, centered
\DeclareStringOption[auto]{countryformat} % auto: <4 chars inline with mdash, >=4 separate line; inline: always inline; below: always separate line
\DeclareStringOption[person]{headeremphasis} % person, company, balanced
\DeclareDefaultOption{\@unknownoptionerror}
\ProcessKeyvalOptions*
@@ -138,6 +139,7 @@
\define@key{BCQ@runtime}{qrcolor}{\def\BCQ@qrcolor{#1}}
\define@key{BCQ@runtime}{countryformat}{\def\BCQ@countryformat{#1}}
\define@key{BCQ@runtime}{layout}{\def\BCQ@layout{#1}}
\define@key{BCQ@runtime}{headeremphasis}{\def\BCQ@headeremphasis{#1}}
\define@key{BCQ@runtime}{crlf}[true]{\BCQ@setbool{crlf}{#1}}
\define@key{BCQ@runtime}{nocrlf}[true]{\BCQ@setbool{crlf}{false}}
\define@key{BCQ@runtime}{address}[true]{\BCQ@setbool{address}{#1}\ifBCQ@address\def\printaddress{}\else\csundef{printaddress}\fi}
@@ -186,6 +188,8 @@
\newcommand\setqrcolor[1]{\setoption{qrcolor}{#1}}
\newcommand\setcountryformat[1]{\setoption{countryformat}{#1}}
\newcommand\setlayout[1]{\setoption{layout}{#1}}
\newcommand\setheaderemphasis[1]{\setoption{headeremphasis}{#1}}
\newcommand\headeremphasis[1]{\setoption{headeremphasis}{#1}}
\newcommand\setcrlf[1]{\setoption{crlf}{#1}}
\newcommand\setaddress[1]{\setoption{address}{#1}}
\newcommand\sethint[1]{\setoption{hint}{#1}}
@@ -637,6 +641,18 @@
\newcommand\displayname{%
\ifhaspersonalname{\personalname}{\companybrandingline}%
}
\newcommand\BCQ@headernameformat[1]{%
\ifdefstring{\BCQ@headeremphasis}{company}{\bfseries #1}{%
\ifdefstring{\BCQ@headeremphasis}{balanced}{{\bfseries #1}}{%
{\large\bfseries #1}%
}%
}%
}
\newcommand\BCQ@headercompanyformat[1]{%
\ifdefstring{\BCQ@headeremphasis}{company}{{\large #1}}{%
\ifdefstring{\BCQ@headeremphasis}{balanced}{#1}{#1}%
}%
}
\newcommand\BCQ@appendvcardposition{%
\ifhaspersonalnamevcard{%
\ (\companyrolestringvcard)%
@@ -916,16 +932,16 @@ END:VCARD\BCQ@nl}
\hspace{\BCQ@logosepused}
\begin{minipage}[c]{\BCQ@namewidth}% name column
\ifBCQ@rightalign\raggedleft\fi% apply alignment
{\bfseries\cond{displayname}}%
\BCQ@headernameformat{\cond{displayname}}%
\ifhaspersonalname{%
\ifhaspositionblock{\\\companybrandingline}{}%
\ifhaspositionblock{\\[0.7ex]\BCQ@headercompanyformat{\companybrandingline}}{}%
}{}%
\end{minipage}
\end{minipage}
}{% no logo: just name
{\bfseries\cond{displayname}}%
\BCQ@headernameformat{\cond{displayname}}%
\ifhaspersonalname{%
\ifhaspositionblock{\\\companybrandingline}{}%
\ifhaspositionblock{\\[0.7ex]\BCQ@headercompanyformat{\companybrandingline}}{}%
}{}%
}
}
+4
View File
@@ -0,0 +1,4 @@
% Local forwarder for compiling examples from this repository checkout.
% Ensures examples use ../businesscard-qrcode.cls instead of a globally installed class.
\input{../businesscard-qrcode.cls}
\endinput
Binary file not shown.
+29
View File
@@ -0,0 +1,29 @@
\documentclass[textwidth=0.58,qrwidth=0.35,qrfirst]{businesscard-qrcode}
\type{work}
\givennames{John}
\familynames{Doe}
\title{CEO}
\company{My\ Company\ LTD}
\email{john.doe@mycompany.ltd}
\homepage{mycompany.ltd}
\phone{+41\ 44\ 123\ 45\ 67}
\street{Example\ Street\ 1}
\zip{8000}
\city{Z\"urich}
\country{Switzerland}
\begin{document}
% Front side: standard layout with QR
\drawcard
% Back side: centered text-only layout
\newcard
\centercontent{%
{\Large\bfseries My\ Company\ LTD}\par
\vspace{0.8em}
john.doe@mycompany.ltd\par
mycompany.ltd
}
\drawcard[layout=centered,noqr,noheader]
\end{document}
Binary file not shown.
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

+68
View File
@@ -0,0 +1,68 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="760" viewBox="0 0 1200 760" role="img" aria-label="businesscard-qrcode standard layout blueprint">
<defs>
<style>
.bg { fill:#f4f6fb; }
.card { fill:#ffffff; stroke:#1f2a44; stroke-width:3; }
.area { fill:#f9fbff; stroke:#44516f; stroke-width:2; }
.sub { fill:#eef3ff; stroke:#5f6f95; stroke-width:1.5; }
.line { stroke:#1f2a44; stroke-width:2.5; }
.h1 { font: 700 30px 'DejaVu Sans', Arial, sans-serif; fill:#18233b; }
.h2 { font: 700 22px 'DejaVu Sans', Arial, sans-serif; fill:#243454; }
.txt { font: 500 17px 'DejaVu Sans', Arial, sans-serif; fill:#243454; }
.small { font: 500 15px 'DejaVu Sans', Arial, sans-serif; fill:#31456f; }
.mono { font: 500 14px 'DejaVu Sans Mono', Consolas, monospace; fill:#31456f; }
.center { text-anchor: middle; dominant-baseline: middle; }
</style>
</defs>
<rect class="bg" x="0" y="0" width="1200" height="760" />
<text class="h1" x="600" y="50" text-anchor="middle">Standard Layout (Normalfall: header + qr + qrfirst)</text>
<rect class="card" x="60" y="80" width="1080" height="620" rx="8" />
<!-- Header -->
<rect class="area" x="90" y="110" width="1020" height="170" rx="4" />
<text class="h2" x="600" y="136" text-anchor="middle">Header Block</text>
<rect class="sub" x="112" y="150" width="230" height="108" rx="4" />
<text class="txt center" x="227" y="190">Optional Name-Logo</text>
<text class="mono center" x="227" y="220">\logo{...}</text>
<rect class="sub" x="360" y="150" width="728" height="48" rx="4" />
<text class="txt center" x="724" y="174">Name Line: honoricprefix + givennames + additionalnames + familynames + honoricsuffix</text>
<rect class="sub" x="360" y="208" width="728" height="50" rx="4" />
<text class="txt center" x="724" y="233">Second line: title/role + [companylogo] + company</text>
<line class="line" x1="90" y1="290" x2="1110" y2="290" />
<text class="small" x="1110" y="284" text-anchor="end">Separator line (only if header=true)</text>
<!-- Body -->
<rect class="area" x="90" y="310" width="1020" height="330" rx="4" />
<text class="h2" x="600" y="336" text-anchor="middle">Main Body Block</text>
<rect class="sub" x="112" y="350" width="420" height="270" rx="4" />
<text class="txt center" x="322" y="385">QR Column (qrwidth)</text>
<rect class="area" x="150" y="410" width="300" height="190" rx="4" />
<text class="txt center" x="300" y="480">QR code</text>
<text class="small center" x="300" y="508">optional \qrlogo</text>
<rect class="sub" x="548" y="350" width="540" height="270" rx="4" />
<text class="txt center" x="818" y="385">Text Column (textwidth)</text>
<rect class="area" x="570" y="410" width="496" height="90" rx="4" />
<text class="txt center" x="818" y="442">Address block (optional)</text>
<text class="small center" x="818" y="468">Map icon + address lines (hidden if no visible address)</text>
<rect class="area" x="570" y="510" width="496" height="92" rx="4" />
<text class="txt center" x="818" y="545">Contact/Social lines</text>
<text class="small center" x="818" y="571">icon | hint | value formatting options</text>
<!-- Footer -->
<rect class="area" x="90" y="648" width="1020" height="34" rx="4" />
<text class="txt center" x="600" y="665">Optional Footer: pgpfingerprint</text>
<!-- Notes -->
<text class="small" x="90" y="726">Swap sides with textfirst. Remove QR with noqr. Remove header with noheader.</text>
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB