将长度作为参数传递给 raisebox

将长度作为参数传递给 raisebox

总结一下:我认为\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}

使用 settodepth

因此看上去-\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

在此处输入图片描述

答案3

这是你想要的吗?

\documentclass{report}

\usepackage{xspace}
\usepackage{mwe}

\newlength\depth
\newcommand\IMG{\raisebox{-0.5\height}{\includegraphics[scale=0.025]{example-image}}\xspace}

\begin{document}

\settodepth{\depth}{g}

text \IMG text

\end{document} 

在此处输入图片描述

相关内容