调整 Initfamily 的 DIY 彩色字母

调整 Initfamily 的 DIY 彩色字母

以下代码模仿了 Steven B. Segletes 对在自制的 Lettrine 中向图像添加字母

\documentclass[12pt]{book}
\usepackage{yfonts,xcolor,scalerel,stackengine,lettrine}
\definecolor{Blood}{RGB}{142,0,28}
\definecolor{Gold}{RGB}{255,179,0}
\setlength{\textwidth}{5.5in}

\fboxsep=1pt
\newcommand\mylettrine[2][2.75ex]{\scaleto{\colorbox{Blood}{%
  \initfamily\textcolor{Gold}{\abovebaseline[0pt]{#2}}}}{#1}\,}

\usepackage[sfdefault]{cabin} 
\begin{document}
\thispagestyle{empty}
\LARGE

\lettrine[lines=3,loversize=0.25,nindent=0.4em,findent=-0.6em]{\mylettrine{N}}{on} semper erat aestas.\\[30pt]
\lettrine[lines=3,loversize=0.25,nindent=0.4em,findent=-0.6em]{\mylettrine{W}}{}\\[30pt]
\lettrine[lines=3,loversize=0.25,nindent=0.4em,findent=-0.6em]{\mylettrine{R}}{}
\end{document}

产生输出

在此处输入图片描述

正如您所见,字母并非都是统一的尺寸 - 而且stackengine似乎可以很好地适应各种字母尺寸;然而,需要进行一些“调整”,因为initfamily我试图添加背景颜色的字母还包含超出给定字母的装饰性花饰,因此,在彩色框的外面我试图“堆叠”字母。

我尝试过用\fboxsep各种方法调整命令,但似乎让情况变得更糟了。

问题:有没有办法?如果有,我该如何统一调整彩色背景,以便所有这些initfamily装饰性字母都能合理地显示在彩色背景的中央,并且所有跳跃的花饰都能很好地包含在方形彩色框内?

谢谢。

答案1

您可以定义一个框命令,该命令对每个字母使用定义的填充。

我只是凭眼睛看的。

在此处输入图片描述

\documentclass[12pt]{book}
\usepackage{yfonts,color,lettrine}
\definecolor{Blood}{RGB}{142,0,28}
\definecolor{Gold}{RGB}{255,179,0}
\setlength{\textwidth}{3in}


\begin{document}

\newcommand\qqq[1]{{%
\setlength\fboxsep{0pt}%
\colorbox{Blood}{%
\sbox0{\color{Gold}\initfamily#1}%
\ifcsname Left #1\endcsname\kern\csname Left #1\endcsname\fi
\ifcsname Top #1\endcsname\ht0=\dimexpr\ht0+\csname Top #1\endcsname\relax\fi
\ifcsname Bottom #1\endcsname\dp0=\dimexpr\dp0+\csname Bottom #1\endcsname\relax\fi
\box0 %
\ifcsname Right #1\endcsname\kern\csname Right #1\endcsname\fi
}}}

\expandafter\def\csname Left A\endcsname{1pt}
\expandafter\def\csname Left B\endcsname{3pt}
\expandafter\def\csname Left D\endcsname{.5pt}
\expandafter\def\csname Left E\endcsname{.1pt}
\expandafter\def\csname Left I\endcsname{2pt}
\expandafter\def\csname Left J\endcsname{2pt}
\expandafter\def\csname Left M\endcsname{3pt}
\expandafter\def\csname Left N\endcsname{2pt}
\expandafter\def\csname Left O\endcsname{2pt}
\expandafter\def\csname Left P\endcsname{.5pt}
\expandafter\def\csname Left Q\endcsname{2pt}
\expandafter\def\csname Left Y\endcsname{1pt}

\expandafter\def\csname Right C\endcsname{.5pt}
\expandafter\def\csname Right G\endcsname{.5pt}
\expandafter\def\csname Right H\endcsname{.1pt}
\expandafter\def\csname Right L\endcsname{.1pt}
\expandafter\def\csname Right P\endcsname{2pt}


\expandafter\def\csname Top A\endcsname{.5pt}
\expandafter\def\csname Top B\endcsname{3pt}
\expandafter\def\csname Top C\endcsname{3pt}
\expandafter\def\csname Top D\endcsname{2pt}
\expandafter\def\csname Top E\endcsname{1pt}
\expandafter\def\csname Top F\endcsname{3.5pt}
\expandafter\def\csname Top G\endcsname{3.5pt}
\expandafter\def\csname Top H\endcsname{3pt}
\expandafter\def\csname Top I\endcsname{2pt}
\expandafter\def\csname Top J\endcsname{2pt}
\expandafter\def\csname Top K\endcsname{3pt}
\expandafter\def\csname Top L\endcsname{1pt}
\expandafter\def\csname Top M\endcsname{1pt}
\expandafter\def\csname Top N\endcsname{2pt}
\expandafter\def\csname Top O\endcsname{2.5pt}
\expandafter\def\csname Top P\endcsname{2.5pt}
\expandafter\def\csname Top Q\endcsname{2pt}
\expandafter\def\csname Top R\endcsname{2.5pt}
\expandafter\def\csname Top S\endcsname{3pt}
\expandafter\def\csname Top T\endcsname{3.5pt}
\expandafter\def\csname Top U\endcsname{2pt}
\expandafter\def\csname Top V\endcsname{2pt}
\expandafter\def\csname Top W\endcsname{2pt}
\expandafter\def\csname Top X\endcsname{3pt}
\expandafter\def\csname Top Y\endcsname{4pt}
\expandafter\def\csname Top Z\endcsname{3pt}

\expandafter\def\csname Bottom A\endcsname{1.5pt}
\expandafter\def\csname Bottom B\endcsname{.1pt}
\expandafter\def\csname Bottom K\endcsname{.1pt}
\expandafter\def\csname Bottom M\endcsname{2pt}
\expandafter\def\csname Bottom N\endcsname{.5pt}
\expandafter\def\csname Bottom O\endcsname{.5pt}
\expandafter\def\csname Bottom P\endcsname{1.5pt}
\expandafter\def\csname Bottom Q\endcsname{.5pt}
\expandafter\def\csname Bottom R\endcsname{1.5pt}
\expandafter\def\csname Bottom U\endcsname{.1pt}
\expandafter\def\csname Bottom X\endcsname{.1pt}
\expandafter\def\csname Bottom Y\endcsname{.1pt}






% just for tests
\def\doqqq#1{#1: \qqq{#1}\par\doqqq}
\long\def\stopqqq#1\doqqq{}

\doqqq ABCDEFGHIJKLMNOPQRSTUVWXYZ\stopqqq




\end{document}

相关内容