总结一下:我认为\depth
它以某种方式丢失了它的信息并且我无法修复它。
我正在尝试将图像放置在内联位置并使用调整其垂直位置\raisebox
,如下所示:
\documentclass{report}
\usepackage{xspace}
\usepackage{mwe}
\newlength\depth
\newcommand\IMG{\raisebox{-\depth}{\includegraphics[scale=0.025]{example-image}}\xspace}
\begin{document}
\settodepth{\depth}{g}
text \IMG text \the\depth
\end{document}
因此看上去-\depth
似乎什么也没做。
即使我使用\setlength{\depth}{1.94444pt}
而不是\settodepth{\depth}{g}
(在序言中或不),结果也不会改变。
但是,如果我明确地把-1.94444pt
值放在-\depth
一切正常的位置:
\newcommand\IMG{\raisebox{-1.94444pt}{\includegraphics[scale=0.025]{example-image}}\xspace}
因此,我如何才能\raisebox
看到存储在的长度\depth
?
答案1
\depth
是一个标准的 latex 命令,但它只能在和类似命令的参数中使用\makebox
,参考框的原始大小。
您已经\newlength\depth
定义了一个同名的新长度寄存器,但框中参数的原始用途与您在这些参数之外启用的\depth
用途无关。\depth
您应该使用除以下名称之外的名称\depth
答案2
除了\depth
名字不好之外,正如已经解释过的,如果您希望图像具有与当前字体中的“g”相同的高度和深度,您可以使用精确的测量方法:
\documentclass{report}
\usepackage{graphicx}
%\newcommand\IMG{%
% \raisebox{-\fontchardp\font`g}{\includegraphics[scale=0.025]{example-image}}%
%}
\newcommand\IMG{%
\raisebox{-\fontchardp\font`g}{%
\includegraphics[
height=\dimexpr\fontcharht\font`g+\fontchardp\font`g\relax
]{example-image}}%
}
\begin{document}
text g\IMG\ text
\LARGE text g\IMG\ text
\end{document}
如果您想要匹配数学希腊字母,您可以利用它们定义的统一方式,从数学组 1 开始。在这里我使用它,\beta
所以它有深度。
\documentclass{report}
\usepackage{graphicx}
\ExplSyntaxOn
\cs_new:Nn \leone_get_charcode_from_mathcode:N
{
\int_mod:nn { #1 } { 256 }
}
\cs_new:Nn \leone_greek_char_ht:N
{
\fontcharht\textfont 1 ~ \leone_get_charcode_from_mathcode:N #1
}
\cs_new:Nn \leone_greek_char_dp:N
{
\fontchardp\textfont 1 ~ \leone_get_charcode_from_mathcode:N #1
}
\cs_new:Nn \leone_greek_char_total:N
{
\dim_eval:n { \leone_greek_char_ht:N #1 + \leone_greek_char_dp:N #1 }
}
\NewDocumentCommand\IMG {}
{
\use:c { check@mathfonts }
\raisebox{-\dim_eval:n { \leone_greek_char_dp:N \beta }}
{
\includegraphics
[
height=\leone_greek_char_total:N \beta
]
{example-image}
}
}
\ExplSyntaxOff
\begin{document}
text $\beta$\IMG\ text
\LARGE text $\beta$\IMG\ text
\end{document}
用\alpha
代替\beta
: