我以编程方式生成模板,以便使用 pdfTeX 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) 编译为 PDF 文件。在某个时候,我想用图像等效项替换一些文本字符:我已将字体文件转换为一堆 .png 文件。一个 png 文件包含字体的一个字符。
现在,我想将这些 png 文件插入到 LaTeX 模板中,以便人类读者永远不会注意到与“真实”文本有任何差异(除非他们尝试复制和粘贴,但这是另一回事)。
问题是:我需要一个适用于每种字体大小(和其他布局设置)的解决方案。
那么,我如何确保图像始终与周围文本的大小精确匹配?
目前,我正在使用includegraphics
,但如果有另一个(免费)软件包能够满足我的要求,我也可以接受。
答案1
\includegraphics[height=1ex]{image.png}
将包括缩放到 1ex 的图像,这是一个字体相关单位,通常是 x 的高度。
答案2
你需要考虑身高和深度。
\documentclass{article}
\usepackage{graphicx}
\makeatletter
\newcommand{\0}[1]{%
\begingroup
\settoheight{\@tempdima}{#1}%
\settodepth{\@tempdimb}{#1}%
\raisebox{-\@tempdimb}{%
\includegraphics[height=\dimexpr\@tempdima+\@tempdimb]{example-image}%
}%
\endgroup
}
\makeatother
\begin{document}
T\0{T} x\0{x} y\0{y}
\end{document}
而不是,example-image
您将拥有一个基于的文件名#1
。
然而,细心的读者将要注意区别:精心制作的字体的字形不一定包含在其边界框中。例如,A 的顶点通常会溢出一点。
可以根据形状对深度和高度进行调整。
答案3
你可以测量字符。以下代码不是处理非 ASCII 字符。
\documentclass{article}
\usepackage{graphicx,expl3}
\ExplSyntaxOn\makeatletter
\newcommand\replacechar[1]{
{
\dim_set:Nn\l_tmpa_dim{\fontcharht\font`#1}
#1\includegraphics[height=\l_tmpa_dim]{example-image-duck}
}
}
\ExplSyntaxOff
\begin{document}
\replacechar{b} \replacechar{X} \replacechar{y} \replacechar{.} \huge
\replacechar{b} \replacechar{X} \replacechar{y} \replacechar{.}
\end{document}