bugs fixed
@@ -7,8 +7,8 @@
|
||||
% option evaluation
|
||||
\RequirePackage{kvoptions}
|
||||
\SetupKeyvalOptions{
|
||||
family=BCQ,
|
||||
prefix=BCQ@
|
||||
family=BCQ,
|
||||
prefix=BCQ@
|
||||
}
|
||||
\DeclareStringOption[89mm]{paperwidth}
|
||||
\DeclareStringOption[59mm]{paperheight}
|
||||
@@ -28,8 +28,8 @@
|
||||
\DeclareStringOption[1.0]{bgopacity} % background image opacity (1.0 = 100% visible, 0.0 = invisible), default 1.0
|
||||
\DeclareStringOption[1.0]{qrbgopacity} % QR code background opacity (1.0 = white solid, 0.0 = transparent), default 1.0
|
||||
\DeclareStringOption[de]{lang}
|
||||
\DeclareBoolOption[false]{ioscrlf} % use CRLF line endings in vCard (iOS compatibility); default off to avoid pdfTeX issues
|
||||
\DeclareBoolOption[true]{address}
|
||||
\DeclareBoolOption[true]{crlf} % use CRLF line endings in vCard (iOS compatibility)
|
||||
\DeclareComplementaryOption{nocrlf}{crlf}\DeclareBoolOption[true]{address}
|
||||
\DeclareComplementaryOption{noaddress}{address}
|
||||
\DeclareBoolOption[true]{hint}
|
||||
\DeclareComplementaryOption{nohint}{hint}
|
||||
@@ -94,52 +94,52 @@
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% data registration
|
||||
\newcommand\BCQ@datareset{%
|
||||
\def\BCQ@data@hide{}%
|
||||
\def\BCQ@data@logo{}%
|
||||
\def\BCQ@data@height{}%
|
||||
\def\BCQ@data@hide{}%
|
||||
\def\BCQ@data@logo{}%
|
||||
\def\BCQ@data@height{}%
|
||||
}
|
||||
\define@key{BCQ@data}{hide}[true]{%
|
||||
\edef\BCQ@data@hide{#1}%
|
||||
\edef\BCQ@data@hide{#1}%
|
||||
}
|
||||
\define@key{BCQ@data}{logo}{%
|
||||
\def\BCQ@data@logo{#1}%
|
||||
\def\BCQ@data@logo{#1}%
|
||||
}
|
||||
\define@key{BCQ@data}{height}{%
|
||||
\def\BCQ@data@height{#1}%
|
||||
\def\BCQ@data@height{#1}%
|
||||
}
|
||||
\newlength{\BCQ@companybrandingheight}
|
||||
\setlength{\BCQ@companybrandingheight}{2em}
|
||||
\newcommand\BCQ@applycompanyoptions{%
|
||||
\csundef{Xcompanylogo}%
|
||||
\csundef{Xcompanylogoheight}%
|
||||
\setlength{\BCQ@companybrandingheight}{2em}%
|
||||
\ifx\BCQ@data@logo\@empty\else
|
||||
\let\Xcompanylogo\BCQ@data@logo
|
||||
\ifx\BCQ@data@height\@empty
|
||||
\def\Xcompanylogoheight{1.5em}%
|
||||
\else
|
||||
\edef\Xcompanylogoheight{\BCQ@data@height}%
|
||||
\fi
|
||||
\setlength{\BCQ@companybrandingheight}{\Xcompanylogoheight}%
|
||||
\fi
|
||||
\csundef{Xcompanylogo}%
|
||||
\csundef{Xcompanylogoheight}%
|
||||
\setlength{\BCQ@companybrandingheight}{2em}%
|
||||
\ifx\BCQ@data@logo\@empty\else
|
||||
\let\Xcompanylogo\BCQ@data@logo
|
||||
\ifx\BCQ@data@height\@empty
|
||||
\def\Xcompanylogoheight{1.5em}%
|
||||
\else
|
||||
\edef\Xcompanylogoheight{\BCQ@data@height}%
|
||||
\fi
|
||||
\setlength{\BCQ@companybrandingheight}{\Xcompanylogoheight}%
|
||||
\fi
|
||||
}
|
||||
\newcommand\registerData[1]{%
|
||||
\expandafter\newcommand\csname #1\endcsname[2][]{%
|
||||
\BCQ@datareset
|
||||
\edef\BCQ@data@options{##1}%
|
||||
\ifx\BCQ@data@options\@empty\else
|
||||
\setkeys{BCQ@data}{##1}%
|
||||
\fi
|
||||
\csundef{X#1@hide}%
|
||||
\ifx\BCQ@data@hide\@empty\else
|
||||
\edef\BCQ@data@hidetmp{\BCQ@data@hide}%
|
||||
\ifdefstring{\BCQ@data@hidetmp}{false}{}{%
|
||||
\expandafter\def\csname X#1@hide\endcsname{true}%
|
||||
}%
|
||||
\fi
|
||||
\expandafter\def\csname X#1\endcsname{##2}%
|
||||
\ifstrequal{#1}{company}{\BCQ@applycompanyoptions}{}%
|
||||
}%
|
||||
\expandafter\newcommand\csname #1\endcsname[2][]{%
|
||||
\BCQ@datareset
|
||||
\edef\BCQ@data@options{##1}%
|
||||
\ifx\BCQ@data@options\@empty\else
|
||||
\setkeys{BCQ@data}{##1}%
|
||||
\fi
|
||||
\csundef{X#1@hide}%
|
||||
\ifx\BCQ@data@hide\@empty\else
|
||||
\edef\BCQ@data@hidetmp{\BCQ@data@hide}%
|
||||
\ifdefstring{\BCQ@data@hidetmp}{false}{}{%
|
||||
\expandafter\def\csname X#1@hide\endcsname{true}%
|
||||
}%
|
||||
\fi
|
||||
\expandafter\def\csname X#1\endcsname{##2}%
|
||||
\ifstrequal{#1}{company}{\BCQ@applycompanyoptions}{}%
|
||||
}%
|
||||
}
|
||||
\registerData{type}
|
||||
\registerData{givennames}
|
||||
@@ -181,71 +181,71 @@
|
||||
% Override document \title to capture card title (original available via \carddocumenttitle)
|
||||
\let\BCQ@documenttitle\title
|
||||
\renewcommand\title[1]{%
|
||||
\def\Xtitle{#1}%
|
||||
\def\Xtitle{#1}%
|
||||
}
|
||||
\newcommand\carddocumenttitle[1]{%
|
||||
\BCQ@documenttitle{#1}%
|
||||
\BCQ@documenttitle{#1}%
|
||||
}
|
||||
% Special commands with optional parameters
|
||||
% \logo[height=...]{file} - logo next to name, overrides logoheight option
|
||||
\define@key{BCQ@logo}{height}{\def\BCQ@logoheight@local{#1}}
|
||||
\newcommand\logo[2][]{
|
||||
\def\Xlogo{#2}
|
||||
\def\BCQ@logo@tmp{#1}%
|
||||
\ifx\BCQ@logo@tmp\@empty\else
|
||||
\setkeys{BCQ@logo}{#1}
|
||||
\fi
|
||||
\def\Xlogo{#2}
|
||||
\def\BCQ@logo@tmp{#1}%
|
||||
\ifx\BCQ@logo@tmp\@empty\else
|
||||
\setkeys{BCQ@logo}{#1}
|
||||
\fi
|
||||
}
|
||||
|
||||
% \qrlogo[scale=...,opacity=...]{file} - logo in QR code center (scale is unitless fraction like 0.3)
|
||||
\define@key{BCQ@qrlogo}{scale}{\def\BCQ@qrlogoscale@local{#1}}
|
||||
\define@key{BCQ@qrlogo}{opacity}{\def\BCQ@qrbgopacity@local{#1}}
|
||||
\newcommand\qrlogo[2][]{
|
||||
\def\Xqrlogo{#2}
|
||||
\def\BCQ@qrlogo@tmp{#1}%
|
||||
\ifx\BCQ@qrlogo@tmp\@empty\else
|
||||
\setkeys{BCQ@qrlogo}{#1}
|
||||
\fi
|
||||
\def\Xqrlogo{#2}
|
||||
\def\BCQ@qrlogo@tmp{#1}%
|
||||
\ifx\BCQ@qrlogo@tmp\@empty\else
|
||||
\setkeys{BCQ@qrlogo}{#1}
|
||||
\fi
|
||||
}
|
||||
|
||||
% \background[scale=...,opacity=...]{file/color} - background image or color
|
||||
\define@key{BCQ@background}{scale}{\def\BCQ@bgscale@local{#1}}
|
||||
\define@key{BCQ@background}{opacity}{\def\BCQ@bgopacity@local{#1}}
|
||||
\newcommand\background[2][]{
|
||||
\def\Xbackground{#2}
|
||||
\def\BCQ@background@tmp{#1}%
|
||||
\ifx\BCQ@background@tmp\@empty\else
|
||||
\setkeys{BCQ@background}{#1}
|
||||
\fi
|
||||
\def\Xbackground{#2}
|
||||
\def\BCQ@background@tmp{#1}%
|
||||
\ifx\BCQ@background@tmp\@empty\else
|
||||
\setkeys{BCQ@background}{#1}
|
||||
\fi
|
||||
}
|
||||
|
||||
\registerData{companylogo} % content (image/object) to display instead of company text (company still in vCard)
|
||||
|
||||
\define@key{BCQ@companylogo}{height}{%
|
||||
\def\BCQ@companylogo@height{#1}%
|
||||
\def\BCQ@companylogo@height{#1}%
|
||||
}
|
||||
\renewcommand\companylogo[2][]{%
|
||||
\def\BCQ@companylogo@height{}%
|
||||
\edef\BCQ@companylogo@options{#1}%
|
||||
\ifx\BCQ@companylogo@options\@empty\else
|
||||
\setkeys{BCQ@companylogo}{#1}%
|
||||
\fi
|
||||
\def\Xcompanylogo{#2}%
|
||||
\ifx\BCQ@companylogo@height\@empty
|
||||
\def\Xcompanylogoheight{1.5em}%
|
||||
\else
|
||||
\edef\Xcompanylogoheight{\BCQ@companylogo@height}%
|
||||
\fi
|
||||
\setlength{\BCQ@companybrandingheight}{\Xcompanylogoheight}%
|
||||
\def\BCQ@companylogo@height{}%
|
||||
\edef\BCQ@companylogo@options{#1}%
|
||||
\ifx\BCQ@companylogo@options\@empty\else
|
||||
\setkeys{BCQ@companylogo}{#1}%
|
||||
\fi
|
||||
\def\Xcompanylogo{#2}%
|
||||
\ifx\BCQ@companylogo@height\@empty
|
||||
\def\Xcompanylogoheight{1.5em}%
|
||||
\else
|
||||
\edef\Xcompanylogoheight{\BCQ@companylogo@height}%
|
||||
\fi
|
||||
\setlength{\BCQ@companybrandingheight}{\Xcompanylogoheight}%
|
||||
}
|
||||
|
||||
\newcommand\ifvisible[3]{%
|
||||
\ifcsdef{#1}{%
|
||||
\ifcsdef{#1@hide}{#3}{#2}%
|
||||
}{#3}%
|
||||
\ifcsdef{#1}{%
|
||||
\ifcsdef{#1@hide}{#3}{#2}%
|
||||
}{#3}%
|
||||
}
|
||||
\newcommand\conddisplay[1]{%
|
||||
\ifvisible{#1}{\exec{#1}}{}%
|
||||
\ifvisible{#1}{\exec{#1}}{}%
|
||||
}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
@@ -254,11 +254,11 @@
|
||||
\newcommand\exec[1]{\csname #1\endcsname}
|
||||
\newcommand\insa[3][]{\ifvisible{#2}{
|
||||
|
||||
\ifBCQ@iconleft
|
||||
\ifBCQ@icon\parbox{1em}{\centering\exec{#3}}\ \fi\ifBCQ@hint{\tiny#1}\fi\ifBCQ@fill\hfill\fi\exec{#2}
|
||||
\else
|
||||
\ifBCQ@hint{\tiny#1\ }\fi\exec{#2}\ifBCQ@fill\hfill\fi\ifBCQ@icon\ \parbox{1em}{\centering\exec{#3}}\fi
|
||||
\fi
|
||||
\ifBCQ@iconleft
|
||||
\ifBCQ@icon\parbox{1em}{\centering\exec{#3}}\ \fi\ifBCQ@hint{\tiny#1}\fi\ifBCQ@fill\hfill\fi\exec{#2}
|
||||
\else
|
||||
\ifBCQ@hint{\tiny#1\ }\fi\exec{#2}\ifBCQ@fill\hfill\fi\ifBCQ@icon\ \parbox{1em}{\centering\exec{#3}}\fi
|
||||
\fi
|
||||
}{}}
|
||||
\newcommand\ifexists[2]{\ifcsdef{#1}{#2}{}}
|
||||
\newcommand\ifboth[3]{\ifcsdef{#1}{\ifcsdef{#2}{#3}{}}{}}
|
||||
@@ -268,13 +268,23 @@
|
||||
% internal boxes and lengths for measuring
|
||||
\newsavebox{\BCQ@namebox}
|
||||
\newsavebox{\BCQ@logobox}
|
||||
\newsavebox{\BCQ@companytitlebox}
|
||||
\newsavebox{\BCQ@companyrightbox}
|
||||
\newlength{\BCQ@logoheightdimen}
|
||||
\setlength{\BCQ@logoheightdimen}{0pt}% initialize to prevent errors
|
||||
\newlength{\BCQ@bgimagedimen}
|
||||
\setlength{\BCQ@bgimagedimen}{0pt}
|
||||
\newdimen\BCQ@companytitlewidth
|
||||
\newdimen\BCQ@companyrightwidth
|
||||
\newdimen\BCQ@companylineavailable
|
||||
\newdimen\BCQ@companylinesum
|
||||
\newif\ifBCQ@companylineneeded
|
||||
\newif\ifBCQ@companytitleexists
|
||||
\newif\ifBCQ@companyrightexists
|
||||
\newlength{\BCQ@reservedheight}
|
||||
\newlength{\BCQ@heightscale}
|
||||
\newlength{\BCQ@namewidth}
|
||||
\newlength{\BCQ@namecolumnwidth}
|
||||
\newlength{\BCQ@logosep}
|
||||
\newlength{\BCQ@logosepused}
|
||||
\setlength{\BCQ@logosep}{1em}
|
||||
@@ -282,161 +292,179 @@
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% name - assemble full name from the parts, such as Xgivennames and Xfamilynames
|
||||
\newcommand\personalnamevcard{%
|
||||
\ifexists{Xhonoricprefix}{\Xhonoricprefix\ }%
|
||||
\ifexists{Xgivennames}{\Xgivennames\ }%
|
||||
\ifexists{Xadditionalnames}{\Xadditionalnames\ }%
|
||||
\ifexists{Xfamilynames}{\Xfamilynames}%
|
||||
\ifexists{Xhonoricsuffix}{\ \Xhonoricsuffix}%
|
||||
\ifexists{Xhonoricprefix}{\Xhonoricprefix\ }%
|
||||
\ifexists{Xgivennames}{\Xgivennames\ }%
|
||||
\ifexists{Xadditionalnames}{\Xadditionalnames\ }%
|
||||
\ifexists{Xfamilynames}{\Xfamilynames}%
|
||||
\ifexists{Xhonoricsuffix}{\ \Xhonoricsuffix}%
|
||||
}
|
||||
\newcommand\personalname{%
|
||||
\ifvisible{Xhonoricprefix}{\Xhonoricprefix\ }{}%
|
||||
\ifvisible{Xgivennames}{\Xgivennames\ }{}%
|
||||
\ifvisible{Xadditionalnames}{\Xadditionalnames\ }{}%
|
||||
\ifvisible{Xfamilynames}{\Xfamilynames}{}%
|
||||
\ifvisible{Xhonoricsuffix}{\ \Xhonoricsuffix}{}%
|
||||
\ifvisible{Xhonoricprefix}{\Xhonoricprefix\ }{}%
|
||||
\ifvisible{Xgivennames}{\Xgivennames\ }{}%
|
||||
\ifvisible{Xadditionalnames}{\Xadditionalnames\ }{}%
|
||||
\ifvisible{Xfamilynames}{\Xfamilynames}{}%
|
||||
\ifvisible{Xhonoricsuffix}{\ \Xhonoricsuffix}{}%
|
||||
}
|
||||
\newcommand\ifhaspersonalname[2]{%
|
||||
\ifvisible{Xhonoricprefix}{#1}{%
|
||||
\ifvisible{Xgivennames}{#1}{%
|
||||
\ifvisible{Xadditionalnames}{#1}{%
|
||||
\ifvisible{Xfamilynames}{#1}{%
|
||||
\ifvisible{Xhonoricsuffix}{#1}{#2}%
|
||||
}%
|
||||
}%
|
||||
}%
|
||||
}%
|
||||
\ifvisible{Xhonoricprefix}{#1}{%
|
||||
\ifvisible{Xgivennames}{#1}{%
|
||||
\ifvisible{Xadditionalnames}{#1}{%
|
||||
\ifvisible{Xfamilynames}{#1}{%
|
||||
\ifvisible{Xhonoricsuffix}{#1}{#2}%
|
||||
}%
|
||||
}%
|
||||
}%
|
||||
}%
|
||||
}
|
||||
\newcommand\ifhaspositiontext[2]{%
|
||||
\ifvisible{Xcompany}{#1}{%
|
||||
\ifvisible{Xtitle}{#1}{%
|
||||
\ifvisible{Xrole}{#1}{#2}%
|
||||
}%
|
||||
}%
|
||||
\ifvisible{Xcompany}{#1}{%
|
||||
\ifvisible{Xtitle}{#1}{%
|
||||
\ifvisible{Xrole}{#1}{#2}%
|
||||
}%
|
||||
}%
|
||||
}
|
||||
\newcommand\ifhaspositionblock[2]{%
|
||||
\ifhaspositiontext{#1}{%
|
||||
\ifcsdef{Xcompanylogo}{#1}{#2}%
|
||||
}%
|
||||
\ifhaspositiontext{#1}{%
|
||||
\ifcsdef{Xcompanylogo}{#1}{#2}%
|
||||
}%
|
||||
}
|
||||
\newcommand\ifhaspersonalnamevcard[2]{%
|
||||
\ifcsname Xhonoricprefix\endcsname
|
||||
#1%
|
||||
\else\ifcsname Xgivennames\endcsname
|
||||
#1%
|
||||
\else\ifcsname Xadditionalnames\endcsname
|
||||
#1%
|
||||
\else\ifcsname Xfamilynames\endcsname
|
||||
#1%
|
||||
\else\ifcsname Xhonoricsuffix\endcsname
|
||||
#1%
|
||||
\else
|
||||
#2%
|
||||
\fi\fi\fi\fi\fi
|
||||
\ifcsname Xhonoricprefix\endcsname
|
||||
#1%
|
||||
\else\ifcsname Xgivennames\endcsname
|
||||
#1%
|
||||
\else\ifcsname Xadditionalnames\endcsname
|
||||
#1%
|
||||
\else\ifcsname Xfamilynames\endcsname
|
||||
#1%
|
||||
\else\ifcsname Xhonoricsuffix\endcsname
|
||||
#1%
|
||||
\else
|
||||
#2%
|
||||
\fi\fi\fi\fi\fi
|
||||
}
|
||||
|
||||
% heightscale - calculate available height for text/QR
|
||||
% Uses actual logo height if logo is taller than default reserved space
|
||||
% This is computed as a length and stored, not a macro
|
||||
\newcommand\computeheightscale{%
|
||||
\setlength{\BCQ@reservedheight}{\dimexpr\ifhaspersonalname{2em}{0em}+\ifhaspositionblock{\BCQ@companybrandingheight}{0pt}\relax}%
|
||||
\ifdim\BCQ@logoheightdimen>\BCQ@reservedheight
|
||||
\setlength{\BCQ@heightscale}{\dimexpr\textheight-\BCQ@logoheightdimen-\ifcsdef{Xpgpfingerprint}{2em}{0em}\relax}%
|
||||
\else
|
||||
\setlength{\BCQ@heightscale}{\dimexpr\textheight-\BCQ@reservedheight-\ifcsdef{Xpgpfingerprint}{2em}{0em}\relax}%
|
||||
\fi
|
||||
\setlength{\BCQ@reservedheight}{\dimexpr\ifhaspersonalname{2em}{0em}+\ifhaspositionblock{\BCQ@companybrandingheight}{0pt}\relax}%
|
||||
\ifdim\BCQ@logoheightdimen>\BCQ@reservedheight
|
||||
\setlength{\BCQ@heightscale}{\dimexpr\textheight-\BCQ@logoheightdimen-\ifcsdef{Xpgpfingerprint}{2em}{0em}\relax}%
|
||||
\else
|
||||
\setlength{\BCQ@heightscale}{\dimexpr\textheight-\BCQ@reservedheight-\ifcsdef{Xpgpfingerprint}{2em}{0em}\relax}%
|
||||
\fi
|
||||
}
|
||||
\newcommand\heightscale{\BCQ@heightscale}
|
||||
|
||||
\newcommand\companyrolestringdisplay{%
|
||||
\ifvisible{Xtitle}{\Xtitle}{}%
|
||||
\ifvisible{Xrole}{%
|
||||
\ifvisible{Xtitle}{, }{}%
|
||||
\Xrole
|
||||
}{}%
|
||||
\ifvisible{Xcompany}{%
|
||||
\ifvisible{Xtitle}{\ \Xcompany}{%
|
||||
\ifvisible{Xrole}{\ \Xcompany}{\Xcompany}%
|
||||
}%
|
||||
}{}%
|
||||
\newcommand\companytitleblock{%
|
||||
\ifvisible{Xtitle}{\Xtitle}{}%
|
||||
\ifvisible{Xrole}{%
|
||||
\ifvisible{Xtitle}{,\ }{}%
|
||||
\Xrole
|
||||
}{}%
|
||||
}
|
||||
\newcommand\companyrightblock{%
|
||||
\ifcsdef{Xcompanylogo}{\companylogocontent}{}%
|
||||
\ifvisible{Xcompany}{%
|
||||
\Xcompany
|
||||
\ifcsdef{Xcompanylogo}{\hspace{0.5em}}{}%
|
||||
}{}%
|
||||
}
|
||||
\newcommand\companybrandingline{%
|
||||
\ifcsdef{Xcompanylogo}{\companylogocontent}{}%
|
||||
\ifhaspositiontext{%
|
||||
\ifcsdef{Xcompanylogo}{\hspace{0.5em}}{}%
|
||||
\companyrolestringdisplay
|
||||
}{}%
|
||||
\begingroup
|
||||
\BCQ@companytitleexistsfalse
|
||||
\ifvisible{Xtitle}{\BCQ@companytitleexiststrue}{}%
|
||||
\ifvisible{Xrole}{\BCQ@companytitleexiststrue}{}%
|
||||
\BCQ@companyrightexistsfalse
|
||||
\ifvisible{Xcompany}{\BCQ@companyrightexiststrue}{}%
|
||||
\ifcsdef{Xcompanylogo}{\BCQ@companyrightexiststrue}{}%
|
||||
\ifBCQ@companytitleexists
|
||||
\companytitleblock
|
||||
\fi
|
||||
\ifBCQ@companytitleexists
|
||||
\ifBCQ@companyrightexists
|
||||
\space
|
||||
\fi
|
||||
\fi
|
||||
\ifBCQ@companyrightexists
|
||||
\companyrightblock
|
||||
\fi
|
||||
\endgroup
|
||||
}
|
||||
\newcommand\companyrolestringvcard{%
|
||||
\ifcsname Xtitle\endcsname
|
||||
\Xtitle
|
||||
\fi
|
||||
\ifcsname Xrole\endcsname
|
||||
\ifcsname Xtitle\endcsname , \fi
|
||||
\Xrole
|
||||
\fi
|
||||
\ifcsname Xcompany\endcsname
|
||||
\ifcsname Xtitle\endcsname
|
||||
\ \Xcompany
|
||||
\else
|
||||
\ifcsname Xrole\endcsname
|
||||
\ \Xcompany
|
||||
\else
|
||||
\Xcompany
|
||||
\fi
|
||||
\fi
|
||||
\fi
|
||||
\ifcsname Xtitle\endcsname
|
||||
\Xtitle
|
||||
\fi
|
||||
\ifcsname Xrole\endcsname
|
||||
\ifcsname Xtitle\endcsname ,\ \fi
|
||||
\Xrole
|
||||
\fi
|
||||
\ifcsname Xcompany\endcsname
|
||||
\ifcsname Xtitle\endcsname
|
||||
\ \Xcompany
|
||||
\else
|
||||
\ifcsname Xrole\endcsname
|
||||
\ \Xcompany
|
||||
\else
|
||||
\Xcompany
|
||||
\fi
|
||||
\fi
|
||||
\fi
|
||||
}
|
||||
\newcommand\displayname{%
|
||||
\ifhaspersonalname{\personalname}{\companybrandingline}%
|
||||
\ifhaspersonalname{\personalname}{\companybrandingline}%
|
||||
}
|
||||
\newcommand\BCQ@appendvcardposition{%
|
||||
\ifhaspersonalnamevcard{%
|
||||
\ (\companyrolestringvcard)%
|
||||
}{%
|
||||
\companyrolestringvcard
|
||||
}%
|
||||
\ifhaspersonalnamevcard{%
|
||||
\ (\companyrolestringvcard)%
|
||||
}{%
|
||||
\companyrolestringvcard
|
||||
}%
|
||||
}
|
||||
\newcommand\BCQ@buildname{%
|
||||
\ifhaspersonalnamevcard{%
|
||||
\personalnamevcard
|
||||
\ifcsname Xtitle\endcsname
|
||||
\BCQ@appendvcardposition
|
||||
\else
|
||||
\ifcsname Xrole\endcsname
|
||||
\BCQ@appendvcardposition
|
||||
\else
|
||||
\ifcsname Xcompany\endcsname
|
||||
\BCQ@appendvcardposition
|
||||
\fi
|
||||
\fi
|
||||
\fi
|
||||
}{%
|
||||
\companyrolestringvcard
|
||||
}%
|
||||
\ifhaspersonalnamevcard{%
|
||||
\personalnamevcard
|
||||
\ifcsname Xtitle\endcsname
|
||||
\BCQ@appendvcardposition
|
||||
\else
|
||||
\ifcsname Xrole\endcsname
|
||||
\BCQ@appendvcardposition
|
||||
\else
|
||||
\ifcsname Xcompany\endcsname
|
||||
\BCQ@appendvcardposition
|
||||
\fi
|
||||
\fi
|
||||
\fi
|
||||
}{%
|
||||
\companyrolestringvcard
|
||||
}%
|
||||
}
|
||||
\let\BCQ@cachedname\@empty
|
||||
\newcommand\BCQ@setnamecache{%
|
||||
\begingroup
|
||||
\edef\BCQ@tmp{\BCQ@buildname}%
|
||||
\global\let\BCQ@cachedname\BCQ@tmp
|
||||
\endgroup
|
||||
\begingroup
|
||||
\edef\BCQ@tmp{\BCQ@buildname}%
|
||||
\global\let\BCQ@cachedname\BCQ@tmp
|
||||
\endgroup
|
||||
}
|
||||
\newcommand\name{%
|
||||
\ifx\BCQ@cachedname\@empty
|
||||
\BCQ@buildname
|
||||
\else
|
||||
\BCQ@cachedname
|
||||
\fi
|
||||
\ifx\BCQ@cachedname\@empty
|
||||
\BCQ@buildname
|
||||
\else
|
||||
\BCQ@cachedname
|
||||
\fi
|
||||
}
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% vcard - the content of the vcard
|
||||
% newline selection: default LF (robust for qrcode). Optional CRLF if ioscrlf option set.
|
||||
\ifBCQ@ioscrlf
|
||||
\def\BCQ@nl{\char13\char10}% CRLF
|
||||
% newline selection: default LF (robust for qrcode). Optional CRLF if crlf option set.
|
||||
{\catcode`\^^M=12\gdef\BCQ@carriagereturn{^^M}}% literal CR (catcode 12)
|
||||
{\catcode`\^^J=12\gdef\BCQ@linefeed{^^J}}% literal LF (catcode 12)
|
||||
\ifBCQ@crlf
|
||||
\def\BCQ@nl{\BCQ@carriagereturn\BCQ@linefeed}% CRLF
|
||||
\else
|
||||
\def\BCQ@nl{^^J}% LF only
|
||||
\def\BCQ@nl{\BCQ@linefeed}% LF only
|
||||
\fi
|
||||
% vcard assembly (version 4.0 retained). CRLF improves iOS import robustness.
|
||||
\newcommand\vcard{BEGIN:VCARD\BCQ@nl
|
||||
@@ -474,95 +502,95 @@ END:VCARD\BCQ@nl}
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% formatcountry - format country based on length and options
|
||||
\newcommand\formatcountry{%
|
||||
\ifcsdef{Xcountry}{%
|
||||
\ifvisible{Xcountry}{%
|
||||
\def\BCQ@shouldinline{false}%
|
||||
\def\BCQ@haszipcity{false}%
|
||||
\ifvisible{Xcity}{\def\BCQ@haszipcity{true}}{}%
|
||||
\ifvisible{Xzip}{\def\BCQ@haszipcity{true}}{}%
|
||||
% Check countryformat option
|
||||
\ifdefstring{\BCQ@countryformat}{inline}{%
|
||||
\def\BCQ@shouldinline{true}%
|
||||
}{%
|
||||
\ifdefstring{\BCQ@countryformat}{below}{%
|
||||
\def\BCQ@shouldinline{false}%
|
||||
}{%
|
||||
% auto mode: check length
|
||||
\StrLen{\Xcountry}[\BCQ@countrylen]%
|
||||
\ifnum\BCQ@countrylen<4\relax%
|
||||
% Short country code AND city/zip exists → inline
|
||||
\ifdefstring{\BCQ@haszipcity}{true}{%
|
||||
\def\BCQ@shouldinline{true}%
|
||||
}{}%
|
||||
\fi%
|
||||
}%
|
||||
}%
|
||||
% Output country
|
||||
\ifdefstring{\BCQ@shouldinline}{true}{%
|
||||
\Xcountry\ \textemdash\ \conddisplay{Xzip} \conddisplay{Xcity}%
|
||||
}{%
|
||||
\conddisplay{Xzip} \conddisplay{Xcity}
|
||||
\ifcsdef{Xcountry}{%
|
||||
\ifvisible{Xcountry}{%
|
||||
\def\BCQ@shouldinline{false}%
|
||||
\def\BCQ@haszipcity{false}%
|
||||
\ifvisible{Xcity}{\def\BCQ@haszipcity{true}}{}%
|
||||
\ifvisible{Xzip}{\def\BCQ@haszipcity{true}}{}%
|
||||
% Check countryformat option
|
||||
\ifdefstring{\BCQ@countryformat}{inline}{%
|
||||
\def\BCQ@shouldinline{true}%
|
||||
}{%
|
||||
\ifdefstring{\BCQ@countryformat}{below}{%
|
||||
\def\BCQ@shouldinline{false}%
|
||||
}{%
|
||||
% auto mode: check length
|
||||
\StrLen{\Xcountry}[\BCQ@countrylen]%
|
||||
\ifnum\BCQ@countrylen<4\relax%
|
||||
% Short country code AND city/zip exists → inline
|
||||
\ifdefstring{\BCQ@haszipcity}{true}{%
|
||||
\def\BCQ@shouldinline{true}%
|
||||
}{}%
|
||||
\fi%
|
||||
}%
|
||||
}%
|
||||
% Output country
|
||||
\ifdefstring{\BCQ@shouldinline}{true}{%
|
||||
\Xcountry\ \textemdash\ \conddisplay{Xzip} \conddisplay{Xcity}%
|
||||
}{%
|
||||
\conddisplay{Xzip} \conddisplay{Xcity}
|
||||
|
||||
\Xcountry
|
||||
|
||||
}%
|
||||
}{%
|
||||
\conddisplay{Xzip} \conddisplay{Xcity}%
|
||||
}%
|
||||
}{
|
||||
\conddisplay{Xzip} \conddisplay{Xcity}%
|
||||
}%
|
||||
\Xcountry
|
||||
|
||||
}%
|
||||
}{%
|
||||
\conddisplay{Xzip} \conddisplay{Xcity}%
|
||||
}%
|
||||
}{
|
||||
\conddisplay{Xzip} \conddisplay{Xcity}%
|
||||
}%
|
||||
}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% address - the address as shown in the textbox
|
||||
\newcommand\address{
|
||||
|
||||
\conddisplay{Xpobox}
|
||||
|
||||
\conddisplay{Xpobox}
|
||||
|
||||
\conddisplay{Xextaddr}
|
||||
|
||||
\conddisplay{Xstreet}
|
||||
|
||||
\formatcountry
|
||||
|
||||
\conddisplay{Xregion}
|
||||
|
||||
\conddisplay{Xextaddr}
|
||||
|
||||
\conddisplay{Xstreet}
|
||||
|
||||
\formatcountry
|
||||
|
||||
\conddisplay{Xregion}
|
||||
|
||||
}
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% inserttext - assemble the textbox
|
||||
\newcommand\inserttext{
|
||||
%\frame
|
||||
{
|
||||
\begin{minipage}[c][\heightscale][c]{\textpercents\textwidth}
|
||||
\ifBCQ@rightalign\begin{flushright}\fi
|
||||
\ifexists{printaddress}{
|
||||
\ifBCQ@iconleft
|
||||
\ifBCQ@icon\parbox[c]{1em}{\faMapMarker}\ \ifBCQ@fill\hfill\fi\fi
|
||||
%\frame{
|
||||
%\pbox[t]{\dimexpr\textwidth-2em\relax}{
|
||||
\begin{varwidth}{\dimexpr\textwidth-2em\relax}
|
||||
\ifBCQ@rightalign\enforceright\fi\address
|
||||
\end{varwidth}
|
||||
%}
|
||||
%}
|
||||
\else
|
||||
%\pbox[t]{\dimexpr\textwidth-2em\relax}{
|
||||
\begin{varwidth}{\dimexpr\textwidth-2em\relax}
|
||||
\ifBCQ@rightalign\enforceright\fi\address
|
||||
\end{varwidth}
|
||||
%}
|
||||
\ifBCQ@icon\ifBCQ@fill\hfill\fi\ \parbox[c]{1em}{\faMapMarker}\fi
|
||||
\fi
|
||||
\vspace{1em}
|
||||
}
|
||||
|
||||
\insa[tel:]{Xphone}{faMobile}\insa[mailto:]{Xemail}{Email}\insa[xmpp]{Xjabber}{faCommentsO}\insa[matrix.org]{Xmatrixorg}{faCommentsO}\insa[nextcloud-id]{Xcloud}{faCloud}\insa[\protdisplay]{Xhomepage}{faHome}\insa[\protdisplay]{Xwordpress}{faWordpress}\insa[\protdisplay]{Xdrupal}{faDrupal}\insa[\protdisplay]{Xjoomla}{faJoomla}\insa[{\protprefix}\lang.wikipedia.org/wiki/]{Xwikipedia}{faWikipediaW}\insa[\protdisplay]{Xlink}{faLink}\insa[\protdisplay]{Xworld}{faGlobe}\insa[\protdisplay]{Xgit}{faGit}\insa[\protdisplay]{Xgitea}{faGithubAlt}\insa[{\protprefix}github.com/]{Xgithub}{faGithub}\insa[{\protprefix}facebook.com/]{Xfacebook}{faFacebook}\insa[{\protprefix}twitter.com/]{Xtwitter}{faTwitter}\insa[{\protprefix}youtube.com/user/]{Xyoutube}{faYoutube}\insa[{\protprefix}plus.google.com/+]{Xgoogle}{faGooglePlus}
|
||||
%\frame
|
||||
{
|
||||
\begin{minipage}[c][\heightscale][c]{\textpercents\textwidth}
|
||||
\ifBCQ@rightalign\begin{flushright}\fi
|
||||
\ifexists{printaddress}{
|
||||
\ifBCQ@iconleft
|
||||
\ifBCQ@icon\parbox[c]{1em}{\faMapMarker}\ \ifBCQ@fill\hfill\fi\fi
|
||||
%\frame{
|
||||
%\pbox[t]{\dimexpr\textwidth-2em\relax}{
|
||||
\begin{varwidth}{\dimexpr\textwidth-2em\relax}
|
||||
\ifBCQ@rightalign\enforceright\fi\address
|
||||
\end{varwidth}
|
||||
%}
|
||||
%}
|
||||
\else
|
||||
%\pbox[t]{\dimexpr\textwidth-2em\relax}{
|
||||
\begin{varwidth}{\dimexpr\textwidth-2em\relax}
|
||||
\ifBCQ@rightalign\enforceright\fi\address
|
||||
\end{varwidth}
|
||||
%}
|
||||
\ifBCQ@icon\ifBCQ@fill\hfill\fi\ \parbox[c]{1em}{\faMapMarker}\fi
|
||||
\fi
|
||||
\vspace{1em}
|
||||
}
|
||||
|
||||
\insa[tel:]{Xphone}{faMobile}\insa[mailto:]{Xemail}{Email}\insa[xmpp]{Xjabber}{faCommentsO}\insa[matrix.org]{Xmatrixorg}{faCommentsO}\insa[nextcloud-id]{Xcloud}{faCloud}\insa[\protdisplay]{Xhomepage}{faHome}\insa[\protdisplay]{Xwordpress}{faWordpress}\insa[\protdisplay]{Xdrupal}{faDrupal}\insa[\protdisplay]{Xjoomla}{faJoomla}\insa[{\protprefix}\lang.wikipedia.org/wiki/]{Xwikipedia}{faWikipediaW}\insa[\protdisplay]{Xlink}{faLink}\insa[\protdisplay]{Xworld}{faGlobe}\insa[\protdisplay]{Xgit}{faGit}\insa[\protdisplay]{Xgitea}{faGithubAlt}\insa[{\protprefix}github.com/]{Xgithub}{faGithub}\insa[{\protprefix}facebook.com/]{Xfacebook}{faFacebook}\insa[{\protprefix}twitter.com/]{Xtwitter}{faTwitter}\insa[{\protprefix}youtube.com/user/]{Xyoutube}{faYoutube}\insa[{\protprefix}plus.google.com/+]{Xgoogle}{faGooglePlus}
|
||||
|
||||
\ifBCQ@rightalign\end{flushright}\fi
|
||||
\end{minipage}
|
||||
\ifBCQ@rightalign\end{flushright}\fi
|
||||
\end{minipage}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -570,42 +598,42 @@ END:VCARD\BCQ@nl}
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% insertqrcode - insert the qr-code with optional white background
|
||||
\newcommand\insertqrcode{
|
||||
% Use local overrides if specified, otherwise use global options
|
||||
\ifcsdef{BCQ@qrbgopacity@local}{%
|
||||
\edef\BCQ@qrbgopacity@used{\BCQ@qrbgopacity@local}%
|
||||
}{%
|
||||
\edef\BCQ@qrbgopacity@used{\BCQ@qrbgopacity}%
|
||||
}%
|
||||
\ifcsdef{BCQ@qrlogoscale@local}{%
|
||||
\edef\BCQ@qrlogoscale@used{\BCQ@qrlogoscale@local}%
|
||||
}{%
|
||||
\edef\BCQ@qrlogoscale@used{\BCQ@qrlogoscale}%
|
||||
}%
|
||||
%\frame
|
||||
{
|
||||
\begin{minipage}[c][\heightscale][c]{\imagepercents\textwidth}
|
||||
\begin{tikzpicture}
|
||||
% White background behind QR code (for readability over background images)
|
||||
\node[fill=white, opacity=\BCQ@qrbgopacity@used, inner sep=0pt, outer sep=2mm, minimum size=\textwidth] (bg) at (0,0) {};
|
||||
% QR code on top
|
||||
\node[inner sep=0pt, outer sep=0pt] (qr) at (0,0) {%
|
||||
% QR code with optional qrlogo overlay in center
|
||||
\ifcsdef{Xqrlogo}{%
|
||||
\begin{tikzpicture}
|
||||
\node[inner sep=0pt] (qr2) {\qrcode[level=\BCQ@qreclevel,version=0,height=\textwidth]{\vcard}};
|
||||
% Logo with transparent background preserved (no fill), padding still applied
|
||||
% qrlogoscale/scale is unitless fraction (0.25 = 25% of QR width)
|
||||
\node[inner sep=\BCQ@qrlogoborder\textwidth] at (qr2.center) {%
|
||||
\includegraphics[width=\BCQ@qrlogoscale@used\textwidth]{\Xqrlogo}%
|
||||
};
|
||||
\end{tikzpicture}%
|
||||
}{%
|
||||
% No qrlogo defined, just show QR code
|
||||
\qrcode[level=\BCQ@qreclevel,version=0,height=\textwidth]{\vcard}%
|
||||
}%
|
||||
};
|
||||
\end{tikzpicture}
|
||||
\end{minipage}
|
||||
% Use local overrides if specified, otherwise use global options
|
||||
\ifcsdef{BCQ@qrbgopacity@local}{%
|
||||
\edef\BCQ@qrbgopacity@used{\BCQ@qrbgopacity@local}%
|
||||
}{%
|
||||
\edef\BCQ@qrbgopacity@used{\BCQ@qrbgopacity}%
|
||||
}%
|
||||
\ifcsdef{BCQ@qrlogoscale@local}{%
|
||||
\edef\BCQ@qrlogoscale@used{\BCQ@qrlogoscale@local}%
|
||||
}{%
|
||||
\edef\BCQ@qrlogoscale@used{\BCQ@qrlogoscale}%
|
||||
}%
|
||||
%\frame
|
||||
{
|
||||
\begin{minipage}[c][\heightscale][c]{\imagepercents\textwidth}
|
||||
\begin{tikzpicture}
|
||||
% White background behind QR code (for readability over background images)
|
||||
\node[fill=white, opacity=\BCQ@qrbgopacity@used, inner sep=0pt, outer sep=2mm, minimum size=\textwidth] (bg) at (0,0) {};
|
||||
% QR code on top
|
||||
\node[inner sep=0pt, outer sep=0pt] (qr) at (0,0) {%
|
||||
% QR code with optional qrlogo overlay in center
|
||||
\ifcsdef{Xqrlogo}{%
|
||||
\begin{tikzpicture}
|
||||
\node[inner sep=0pt] (qr2) {\qrcode[level=\BCQ@qreclevel,version=0,height=\textwidth]{\vcard}};
|
||||
% Logo with transparent background preserved (no fill), padding still applied
|
||||
% qrlogoscale/scale is unitless fraction (0.25 = 25% of QR width)
|
||||
\node[inner sep=\BCQ@qrlogoborder\textwidth] at (qr2.center) {%
|
||||
\includegraphics[width=\BCQ@qrlogoscale@used\textwidth]{\Xqrlogo}%
|
||||
};
|
||||
\end{tikzpicture}%
|
||||
}{%
|
||||
% No qrlogo defined, just show QR code
|
||||
\qrcode[level=\BCQ@qreclevel,version=0,height=\textwidth]{\vcard}%
|
||||
}%
|
||||
};
|
||||
\end{tikzpicture}
|
||||
\end{minipage}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -613,120 +641,123 @@ END:VCARD\BCQ@nl}
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% insertname - insert the name on the top
|
||||
\newcommand\insertname{
|
||||
% typeset name into box for measurement
|
||||
\sbox{\BCQ@namebox}{\bfseries\cond{displayname}}%
|
||||
% Set default logoheight if not specified: 4em with company, 2em without
|
||||
\ifx\BCQ@logoheight\@empty
|
||||
\ifcsdef{Xcompany}{\def\BCQ@logoheight{4em}}{\def\BCQ@logoheight{2em}}%
|
||||
\fi
|
||||
% Use local height override if specified, otherwise use global logoheight
|
||||
\ifcsdef{BCQ@logoheight@local}{%
|
||||
\edef\BCQ@logoheight@used{\BCQ@logoheight@local}%
|
||||
}{%
|
||||
\edef\BCQ@logoheight@used{\BCQ@logoheight}%
|
||||
}%
|
||||
% Store logo height as dimension for heightscale calculation
|
||||
\ifcsdef{Xlogo}{%
|
||||
\sbox{\BCQ@logobox}{\includegraphics[height=\BCQ@logoheight@used]{\Xlogo}}%
|
||||
\setlength{\BCQ@logoheightdimen}{\BCQ@logoheight@used}%
|
||||
}{%
|
||||
\setlength{\BCQ@logoheightdimen}{0pt}%
|
||||
}%
|
||||
% Compute heightscale after logo height is known
|
||||
\computeheightscale
|
||||
\ifcsdef{Xlogo}{% logo defined
|
||||
% Logo next to name: dynamic columns (logo natural width, name uses remaining space)
|
||||
\setlength{\BCQ@logosepused}{\BCQ@logosep}%
|
||||
\setlength{\BCQ@namewidth}{\dimexpr\textwidth-\wd\BCQ@logobox-\BCQ@logosepused\relax}%
|
||||
\ifdim\BCQ@namewidth<0pt
|
||||
\setlength{\BCQ@logosepused}{0pt}%
|
||||
\setlength{\BCQ@namewidth}{\dimexpr\textwidth-\wd\BCQ@logobox\relax}%
|
||||
\ifdim\BCQ@namewidth<0pt\setlength{\BCQ@namewidth}{0pt}\fi
|
||||
\fi
|
||||
\begin{minipage}{\textwidth}
|
||||
\begin{minipage}[c]{\wd\BCQ@logobox}% logo column
|
||||
\usebox{\BCQ@logobox}%
|
||||
\end{minipage}
|
||||
\hspace{\BCQ@logosepused}
|
||||
\begin{minipage}[c]{\BCQ@namewidth}% name column
|
||||
\ifBCQ@rightalign\raggedleft\fi% apply alignment
|
||||
{\bfseries\cond{displayname}}%
|
||||
\ifhaspersonalname{%
|
||||
\ifhaspositionblock{\\\companybrandingline}{}%
|
||||
}{}%
|
||||
\end{minipage}
|
||||
\end{minipage}
|
||||
}{% no logo: just name
|
||||
{\bfseries\cond{displayname}}%
|
||||
\ifhaspersonalname{%
|
||||
\ifhaspositionblock{\\\companybrandingline}{}%
|
||||
}{}%
|
||||
}
|
||||
% typeset name into box for measurement
|
||||
\sbox{\BCQ@namebox}{\bfseries\cond{displayname}}%
|
||||
% Set default logoheight if not specified: 4em with company, 2em without
|
||||
\ifx\BCQ@logoheight\@empty
|
||||
\ifcsdef{Xcompany}{\def\BCQ@logoheight{4em}}{\def\BCQ@logoheight{2em}}%
|
||||
\fi
|
||||
% Use local height override if specified, otherwise use global logoheight
|
||||
\ifcsdef{BCQ@logoheight@local}{%
|
||||
\edef\BCQ@logoheight@used{\BCQ@logoheight@local}%
|
||||
}{%
|
||||
\edef\BCQ@logoheight@used{\BCQ@logoheight}%
|
||||
}%
|
||||
% Store logo height as dimension for heightscale calculation
|
||||
\ifcsdef{Xlogo}{%
|
||||
\sbox{\BCQ@logobox}{\includegraphics[height=\BCQ@logoheight@used]{\Xlogo}}%
|
||||
\setlength{\BCQ@logoheightdimen}{\BCQ@logoheight@used}%
|
||||
\setlength{\BCQ@namecolumnwidth}{\dimexpr\textwidth-\wd\BCQ@logobox-\BCQ@logosep\relax}%
|
||||
}{%
|
||||
\setlength{\BCQ@logoheightdimen}{0pt}%
|
||||
\setlength{\BCQ@namecolumnwidth}{\textwidth}%
|
||||
}%
|
||||
% Compute heightscale after logo height is known
|
||||
\computeheightscale
|
||||
\ifcsdef{Xlogo}{% logo defined
|
||||
% Logo next to name: dynamic columns (logo natural width, name uses remaining space)
|
||||
\setlength{\BCQ@logosepused}{\BCQ@logosep}%
|
||||
\setlength{\BCQ@namewidth}{\dimexpr\textwidth-\wd\BCQ@logobox-\BCQ@logosepused\relax}%
|
||||
\ifdim\BCQ@namewidth<0pt
|
||||
\setlength{\BCQ@logosepused}{0pt}%
|
||||
\setlength{\BCQ@namewidth}{\dimexpr\textwidth-\wd\BCQ@logobox\relax}%
|
||||
\ifdim\BCQ@namewidth<0pt\setlength{\BCQ@namewidth}{0pt}\fi
|
||||
\fi
|
||||
\setlength{\BCQ@namecolumnwidth}{\BCQ@namewidth}%
|
||||
\begin{minipage}{\textwidth}
|
||||
\begin{minipage}[c]{\wd\BCQ@logobox}% logo column
|
||||
\usebox{\BCQ@logobox}%
|
||||
\end{minipage}
|
||||
\hspace{\BCQ@logosepused}
|
||||
\begin{minipage}[c]{\BCQ@namewidth}% name column
|
||||
\ifBCQ@rightalign\raggedleft\fi% apply alignment
|
||||
{\bfseries\cond{displayname}}%
|
||||
\ifhaspersonalname{%
|
||||
\ifhaspositionblock{\\\companybrandingline}{}%
|
||||
}{}%
|
||||
\end{minipage}
|
||||
\end{minipage}
|
||||
}{% no logo: just name
|
||||
{\bfseries\cond{displayname}}%
|
||||
\ifhaspersonalname{%
|
||||
\ifhaspositionblock{\\\companybrandingline}{}%
|
||||
}{}%
|
||||
}
|
||||
}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% drawcardcontent - assemble all blocks (name, text, qr, pgp)
|
||||
\newcommand\drawcardcontent{
|
||||
\BCQ@setnamecache
|
||||
\ifBCQ@rightalign\begin{flushright}\fi
|
||||
\insertname
|
||||
\noindent\makebox[\linewidth]{\rule{\paperwidth}{0.4pt}} % horizontal line
|
||||
\vfill
|
||||
\ifBCQ@qrfirst
|
||||
\insertqrcode
|
||||
\hfill
|
||||
\inserttext
|
||||
\else
|
||||
\inserttext
|
||||
\hfill
|
||||
\insertqrcode
|
||||
\fi
|
||||
\ifexists{Xpgpfingerprint}{
|
||||
\vfill
|
||||
\ifBCQ@iconleft
|
||||
\faLock\ifBCQ@hint{\tiny\ pgp}\fi\hfill{\small\Xpgpfingerprint}
|
||||
\else
|
||||
{\small\Xpgpfingerprint}\hfill\ifBCQ@hint{\tiny{pgp\ }}\fi\faLock
|
||||
\fi
|
||||
}
|
||||
\ifBCQ@rightalign\end{flushright}\fi
|
||||
\BCQ@setnamecache
|
||||
\ifBCQ@rightalign\begin{flushright}\fi
|
||||
\insertname
|
||||
\noindent\makebox[\linewidth]{\rule{\paperwidth}{0.4pt}} % horizontal line
|
||||
\vfill
|
||||
\ifBCQ@qrfirst
|
||||
\insertqrcode
|
||||
\hfill
|
||||
\inserttext
|
||||
\else
|
||||
\inserttext
|
||||
\hfill
|
||||
\insertqrcode
|
||||
\fi
|
||||
\ifexists{Xpgpfingerprint}{
|
||||
\vfill
|
||||
\ifBCQ@iconleft
|
||||
\faLock\ifBCQ@hint{\tiny\ pgp}\fi\hfill{\small\Xpgpfingerprint}
|
||||
\else
|
||||
{\small\Xpgpfingerprint}\hfill\ifBCQ@hint{\tiny{pgp\ }}\fi\faLock
|
||||
\fi
|
||||
}
|
||||
\ifBCQ@rightalign\end{flushright}\fi
|
||||
}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% drawcard - main card with optional background
|
||||
\newcommand\drawcard{
|
||||
% Use local overrides if specified, otherwise use global options
|
||||
\ifcsdef{BCQ@bgscale@local}{%
|
||||
\edef\BCQ@bgscale@used{\BCQ@bgscale@local}%
|
||||
}{%
|
||||
\edef\BCQ@bgscale@used{\BCQ@bgscale}%
|
||||
}%
|
||||
\ifcsdef{BCQ@bgopacity@local}{%
|
||||
\edef\BCQ@bgopacity@used{\BCQ@bgopacity@local}%
|
||||
}{%
|
||||
\edef\BCQ@bgopacity@used{\BCQ@bgopacity}%
|
||||
}%
|
||||
% Handle background
|
||||
\ifcsdef{Xbackground}{%
|
||||
\IfFileExists{\Xbackground}{%
|
||||
% It's an image file: add to background using eso-pic (no layout impact)
|
||||
\AddToShipoutPictureBG*{%
|
||||
\AtPageCenter{%
|
||||
\begin{tikzpicture}[overlay]
|
||||
\node[inner sep=0pt, opacity=\BCQ@bgopacity@used] at (0,0) {%
|
||||
\setlength{\BCQ@bgimagedimen}{\dimexpr\BCQ@bgscale@used\paperheight\relax}%
|
||||
\includegraphics[height=\BCQ@bgimagedimen]{\Xbackground}%
|
||||
};
|
||||
\end{tikzpicture}%
|
||||
}%
|
||||
}%
|
||||
}{%
|
||||
% Not a file: treat as color
|
||||
\pagecolor{\Xbackground}%
|
||||
}%
|
||||
}{}%
|
||||
% Draw card content
|
||||
\drawcardcontent
|
||||
% Use local overrides if specified, otherwise use global options
|
||||
\ifcsdef{BCQ@bgscale@local}{%
|
||||
\edef\BCQ@bgscale@used{\BCQ@bgscale@local}%
|
||||
}{%
|
||||
\edef\BCQ@bgscale@used{\BCQ@bgscale}%
|
||||
}%
|
||||
\ifcsdef{BCQ@bgopacity@local}{%
|
||||
\edef\BCQ@bgopacity@used{\BCQ@bgopacity@local}%
|
||||
}{%
|
||||
\edef\BCQ@bgopacity@used{\BCQ@bgopacity}%
|
||||
}%
|
||||
% Handle background
|
||||
\ifcsdef{Xbackground}{%
|
||||
\IfFileExists{\Xbackground}{%
|
||||
% It's an image file: add to background using eso-pic (no layout impact)
|
||||
\AddToShipoutPictureBG*{%
|
||||
\AtPageCenter{%
|
||||
\begin{tikzpicture}[overlay]
|
||||
\node[inner sep=0pt, opacity=\BCQ@bgopacity@used] at (0,0) {%
|
||||
\setlength{\BCQ@bgimagedimen}{\dimexpr\BCQ@bgscale@used\paperheight\relax}%
|
||||
\includegraphics[height=\BCQ@bgimagedimen]{\Xbackground}%
|
||||
};
|
||||
\end{tikzpicture}%
|
||||
}%
|
||||
}%
|
||||
}{%
|
||||
% Not a file: treat as color
|
||||
\pagecolor{\Xbackground}%
|
||||
}%
|
||||
}{}%
|
||||
% Draw card content
|
||||
\drawcardcontent
|
||||
}
|
||||
|
||||
|
||||
@@ -734,52 +765,52 @@ END:VCARD\BCQ@nl}
|
||||
% cut / crop marks
|
||||
\RequirePackage[\papersize,noinfo,center,pdftex]{crop}
|
||||
\newcommand\tl{
|
||||
\begin{picture}(0,0)
|
||||
\thinlines\unitlength1mm
|
||||
\put(-\border,0){\line(1,0){\cutlen}}
|
||||
\put(0,\border){\line(0,-1){\cutlen}}
|
||||
\end{picture}
|
||||
\begin{picture}(0,0)
|
||||
\thinlines\unitlength1mm
|
||||
\put(-\border,0){\line(1,0){\cutlen}}
|
||||
\put(0,\border){\line(0,-1){\cutlen}}
|
||||
\end{picture}
|
||||
}
|
||||
\newcommand\tr{
|
||||
\begin{picture}(0,0)
|
||||
\thinlines\unitlength1mm
|
||||
\put(\border,0){\line(-1,0){\cutlen}}
|
||||
\put(0,\border){\line(0,-1){\cutlen}}
|
||||
\end{picture}
|
||||
\begin{picture}(0,0)
|
||||
\thinlines\unitlength1mm
|
||||
\put(\border,0){\line(-1,0){\cutlen}}
|
||||
\put(0,\border){\line(0,-1){\cutlen}}
|
||||
\end{picture}
|
||||
}
|
||||
\newcommand\bl{
|
||||
\begin{picture}(0,0)
|
||||
\thinlines\unitlength1mm
|
||||
\put(-\border,0){\line(1,0){\cutlen}}
|
||||
\put(0,-\border){\line(0,1){\cutlen}}
|
||||
\end{picture}
|
||||
\begin{picture}(0,0)
|
||||
\thinlines\unitlength1mm
|
||||
\put(-\border,0){\line(1,0){\cutlen}}
|
||||
\put(0,-\border){\line(0,1){\cutlen}}
|
||||
\end{picture}
|
||||
}
|
||||
\newcommand\br{
|
||||
\begin{picture}(0,0)
|
||||
\thinlines\unitlength1mm
|
||||
\put(\border,0){\line(-1,0){\cutlen}}
|
||||
\put(0,-\border){\line(0,1){\cutlen}}
|
||||
\end{picture}
|
||||
\begin{picture}(0,0)
|
||||
\thinlines\unitlength1mm
|
||||
\put(\border,0){\line(-1,0){\cutlen}}
|
||||
\put(0,-\border){\line(0,1){\cutlen}}
|
||||
\end{picture}
|
||||
}
|
||||
\cropdef[]\tl\tr\bl\br{cut}
|
||||
\crop[cut]
|
||||
\newcommand\companylogocontent{%
|
||||
\begingroup
|
||||
\edef\BCQ@companylogoscan{\expandafter\detokenize\expandafter{\Xcompanylogo}}%
|
||||
\IfSubStr{\BCQ@companylogoscan}{\string\\}{%
|
||||
\endgroup
|
||||
\Xcompanylogo
|
||||
}{%
|
||||
\xdef\BCQ@companylogopath{\BCQ@companylogoscan}%
|
||||
\endgroup
|
||||
\IfFileExists{\BCQ@companylogopath}{%
|
||||
\edef\BCQ@companylogoheightused{1.5em}%
|
||||
\ifcsdef{Xcompanylogoheight}{%
|
||||
\edef\BCQ@companylogoheightused{\Xcompanylogoheight}%
|
||||
}{}%
|
||||
\includegraphics[height=\BCQ@companylogoheightused]{\BCQ@companylogopath}%
|
||||
}{%
|
||||
\Xcompanylogo
|
||||
}%
|
||||
}%
|
||||
\begingroup
|
||||
\edef\BCQ@companylogoscan{\expandafter\detokenize\expandafter{\Xcompanylogo}}%
|
||||
\IfSubStr{\BCQ@companylogoscan}{\string\\}{%
|
||||
\endgroup
|
||||
\Xcompanylogo
|
||||
}{%
|
||||
\xdef\BCQ@companylogopath{\BCQ@companylogoscan}%
|
||||
\endgroup
|
||||
\IfFileExists{\BCQ@companylogopath}{%
|
||||
\edef\BCQ@companylogoheightused{1.5em}%
|
||||
\ifcsdef{Xcompanylogoheight}{%
|
||||
\edef\BCQ@companylogoheightused{\Xcompanylogoheight}%
|
||||
}{}%
|
||||
\includegraphics[height=\BCQ@companylogoheightused]{\BCQ@companylogopath}%
|
||||
}{%
|
||||
\Xcompanylogo
|
||||
}%
|
||||
}%
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 653 KiB |
@@ -1,2 +0,0 @@
|
||||
%PDF-1.7
|
||||
%הנםר
|
||||
|
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 779 KiB After Width: | Height: | Size: 778 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |