3

I am actually looking for tweak to this post Composition of \mathbb and \mathcal

In particular would it be possible to get the same letters but with thin lines instead of think lines featured in the nice answer of this post?

8

Like this? (pdflatex only)

To summarize what is being done, I am using pdf specials (pdflatex only) to print the glyph core and outline as two separate colors \fillcolor defining the core color and \bordercolor defining the outline color. The "thickness" (a scalar value) of the outline is defined by \thickness and, in several of the cases, I overlay two glyphs atop each other with a slight kerning offset, where the \kern is specified in the stack.

This first example is not overlaid with two glyphs, but merely a simple pdf special setting the letter core white and the outline black, with a chosen \thickness of .1.

\documentclass[10pt]{article}
\usepackage{stackengine,xcolor}
\input pdf-trans
\newbox\qbox
\def\usecolor#1{\csname\string\color@#1\endcsname\space}
\newcommand\bordercolor[1]{\colsplit{1}{#1}}
\newcommand\fillcolor[1]{\colsplit{0}{#1}}
\newcommand\colsplit[2]{\colorlet{tmpcolor}{#2}\edef\tmp{\usecolor{tmpcolor}}%
  \def\tmpB{}\expandafter\colsplithelp\tmp\relax%
  \ifnum0=#1\relax\edef\fillcol{\tmpB}\else\edef\bordercol{\tmpC}\fi}
\def\colsplithelp#1#2 #3\relax{%
  \edef\tmpB{\tmpB#1#2 }%
  \ifnum `#1>`9\relax\def\tmpC{#3}\else\colsplithelp#3\relax\fi
}
\newcommand\outline[1]{\leavevmode%
  \def\maltext{#1}%
  \setbox\qbox=\hbox{\maltext}%
  \boxgs{Q q 2 Tr \thickness\space w \fillcol\space \bordercol\space}{}%
  \copy\qbox%
}
\newcommand\mathcalbb[2][1]{\outline{$\mathcal{#2}$}}
\bordercolor{black}
\fillcolor{white}
\def\thickness{.1}% TO CHANGE THICKNESS OF SHADOW
\begin{document}
$\mathcalbb{A}\mathcalbb{B}\mathcalbb{C}\mathcalbb{D}\mathcalbb{E}\mathcalbb{F}
\mathcalbb{G}\mathcalbb{H}\mathcalbb{I}\mathcalbb{J}\mathcalbb{K}\mathcalbb{L}
\mathcalbb{M}$

$\mathcalbb{N}\mathcalbb{O}\mathcalbb{P}\mathcalbb{Q}\mathcalbb{R}
\mathcalbb{S}\mathcalbb{T}\mathcalbb{U}\mathcalbb{V}\mathcalbb{W}\mathcalbb{X}
\mathcalbb{Y}\mathcalbb{Z}
$

$\mathcalbb[.8]{A}\mathcalbb{A}\mathcalbb[1.2]{A}$
\end{document}

enter image description here

...or maybe like this, which includes a kerned offset overlay:

\documentclass[10pt]{article}
\usepackage{stackengine,xcolor}
\input pdf-trans
\newbox\qbox
\def\usecolor#1{\csname\string\color@#1\endcsname\space}
\newcommand\bordercolor[1]{\colsplit{1}{#1}}
\newcommand\fillcolor[1]{\colsplit{0}{#1}}
\newcommand\colsplit[2]{\colorlet{tmpcolor}{#2}\edef\tmp{\usecolor{tmpcolor}}%
  \def\tmpB{}\expandafter\colsplithelp\tmp\relax%
  \ifnum0=#1\relax\edef\fillcol{\tmpB}\else\edef\bordercol{\tmpC}\fi}
\def\colsplithelp#1#2 #3\relax{%
  \edef\tmpB{\tmpB#1#2 }%
  \ifnum `#1>`9\relax\def\tmpC{#3}\else\colsplithelp#3\relax\fi
}
\newcommand\outline[1]{\leavevmode%
  \def\maltext{#1}%
  \setbox\qbox=\hbox{\maltext}%
  \boxgs{Q q 2 Tr \thickness\space w \fillcol\space \bordercol\space}{}%
  \copy\qbox%
}
\newcommand\mathcalbb[2][1]{%
  \stackengine{0pt}{\outline{$\mathcal{#2}$}}{\kern.3pt\outline{$\mathcal{#2}$}}{O}{l}{F}{F}{L}}
\bordercolor{black}
\fillcolor{white}
\def\thickness{.1}% TO CHANGE THICKNESS OF SHADOW
\begin{document}
$\mathcalbb{A}\mathcalbb{B}\mathcalbb{C}\mathcalbb{D}\mathcalbb{E}\mathcalbb{F}
\mathcalbb{G}\mathcalbb{H}\mathcalbb{I}\mathcalbb{J}\mathcalbb{K}\mathcalbb{L}
\mathcalbb{M}$

$\mathcalbb{N}\mathcalbb{O}\mathcalbb{P}\mathcalbb{Q}\mathcalbb{R}
\mathcalbb{S}\mathcalbb{T}\mathcalbb{U}\mathcalbb{V}\mathcalbb{W}\mathcalbb{X}
\mathcalbb{Y}\mathcalbb{Z}
$

$\mathcalbb[.8]{A}\mathcalbb{A}\mathcalbb[1.2]{A}$
\end{document}

enter image description here

...or, lastly,

\documentclass[10pt]{article}
\usepackage{stackengine,xcolor}
\input pdf-trans
\newbox\qbox
\def\usecolor#1{\csname\string\color@#1\endcsname\space}
\newcommand\bordercolor[1]{\colsplit{1}{#1}}
\newcommand\fillcolor[1]{\colsplit{0}{#1}}
\newcommand\colsplit[2]{\colorlet{tmpcolor}{#2}\edef\tmp{\usecolor{tmpcolor}}%
  \def\tmpB{}\expandafter\colsplithelp\tmp\relax%
  \ifnum0=#1\relax\edef\fillcol{\tmpB}\else\edef\bordercol{\tmpC}\fi}
\def\colsplithelp#1#2 #3\relax{%
  \edef\tmpB{\tmpB#1#2 }%
  \ifnum `#1>`9\relax\def\tmpC{#3}\else\colsplithelp#3\relax\fi
}
\newcommand\outline[1]{\leavevmode%
  \def\maltext{#1}%
  \setbox\qbox=\hbox{\maltext}%
  \boxgs{Q q 2 Tr \thickness\space w \fillcol\space \bordercol\space}{}%
  \copy\qbox%
}
\newcommand\mathcalbb[2][1]{%
  \stackengine{0pt}{\def\thickness{.15}\outline{$\mathcal{#2}$}}{\kern.1pt\outline{$\mathcal{#2}$}}{O}{l}{F}{F}{L}}
\bordercolor{black}
\fillcolor{white}
\def\thickness{.1}% TO CHANGE THICKNESS OF SHADOW
\begin{document}
$\mathcalbb{A}\mathcalbb{B}\mathcalbb{C}\mathcalbb{D}\mathcalbb{E}\mathcalbb{F}
\mathcalbb{G}\mathcalbb{H}\mathcalbb{I}\mathcalbb{J}\mathcalbb{K}\mathcalbb{L}
\mathcalbb{M}$

$\mathcalbb{N}\mathcalbb{O}\mathcalbb{P}\mathcalbb{Q}\mathcalbb{R}
\mathcalbb{S}\mathcalbb{T}\mathcalbb{U}\mathcalbb{V}\mathcalbb{W}\mathcalbb{X}
\mathcalbb{Y}\mathcalbb{Z}
$

$\mathcalbb[.8]{A}\mathcalbb{A}\mathcalbb[1.2]{A}$
\end{document}

enter image description here


SUPPLEMENT

In this gratuitous example, I reverse the colors (border white, fill black) for the thicker of the two stacked glyphs. By increasing the thickness of the white border, I reduce the apparent thickness of the black core. However, the offset overlay is done in the other fashion, with a thin black border.

\documentclass[10pt]{article}
\usepackage{stackengine,xcolor}
\input pdf-trans
\newbox\qbox
\def\usecolor#1{\csname\string\color@#1\endcsname\space}
\newcommand\bordercolor[1]{\colsplit{1}{#1}}
\newcommand\fillcolor[1]{\colsplit{0}{#1}}
\newcommand\colsplit[2]{\colorlet{tmpcolor}{#2}\edef\tmp{\usecolor{tmpcolor}}%
  \def\tmpB{}\expandafter\colsplithelp\tmp\relax%
  \ifnum0=#1\relax\edef\fillcol{\tmpB}\else\edef\bordercol{\tmpC}\fi}
\def\colsplithelp#1#2 #3\relax{%
  \edef\tmpB{\tmpB#1#2 }%
  \ifnum `#1>`9\relax\def\tmpC{#3}\else\colsplithelp#3\relax\fi
}
\newcommand\outline[1]{\leavevmode%
  \def\maltext{#1}%
  \setbox\qbox=\hbox{\maltext}%
  \boxgs{Q q 2 Tr \thickness\space w \fillcol\space \bordercol\space}{}%
  \copy\qbox%
}
\newcommand\mathcalbb[2][1]{%
  \stackengine{0pt}{\bordercolor{black}%
\fillcolor{white}%
\def\thickness{.2}\outline{$\mathcal{#2}$}}{\kern.15pt\outline{$\mathcal{#2}$}}{O}{l}{F}{F}{L}}
\bordercolor{white}
\fillcolor{black}
\def\thickness{.25}% TO CHANGE THICKNESS OF SHADOW
\begin{document}
$\mathcalbb{A}\mathcalbb{B}\mathcalbb{C}\mathcalbb{D}\mathcalbb{E}\mathcalbb{F}
\mathcalbb{G}\mathcalbb{H}\mathcalbb{I}\mathcalbb{J}\mathcalbb{K}\mathcalbb{L}
\mathcalbb{M}$

$\mathcalbb{N}\mathcalbb{O}\mathcalbb{P}\mathcalbb{Q}\mathcalbb{R}
\mathcalbb{S}\mathcalbb{T}\mathcalbb{U}\mathcalbb{V}\mathcalbb{W}\mathcalbb{X}
\mathcalbb{Y}\mathcalbb{Z}
$

$\mathcalbb[.8]{A}\mathcalbb{A}\mathcalbb[1.2]{A}$
\end{document}

enter image description here

  • Great ! thanks. Could you maybe highlight which command I need to change to vary the thickness? – Anne O'Nyme May 31 at 12:19
  • @AnneO'Nyme \def\thickness{.1} defines the line thickness. In the two latter examples, two offset copies are overlaid. the horizontal offset is defined by the \kern.15pt inside the stack. – Steven B. Segletes May 31 at 12:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.