与计算器包的间距

与计算器包的间距

我正在尝试添加图像并将其宽度和高度信息(以毫米为单位)叠加到图像上。我将图像保存到一个框中,然后使用计算器包计算该框的毫米宽度和高度。然后我使用图片环境放置图像,并在其上方放置带有测量值的 fcolorbox。

发生的情况是,我在图片环境前获得了额外的间距,但仅限于使用计算器包中的命令时。 是存在错误还是我做错了什么?

这是我的示例,使用 \rule 作为图像的虚拟项;第 1 页是计算出的测量值,第 2 页是手动输入的测量值:

\documentclass{article}
\usepackage{blindtext}
%\usepackage{graphicx}
\usepackage{xcolor}
\usepackage{picture}
\usepackage{calculator}
\newsavebox{\tmpboxa}%
\begin{document}\noindent
    \savebox{\tmpboxa}{\rule{\textwidth}{50mm}}% This is where the image will be includegraphicsed
    \LENGTHDIVIDE{\wd\tmpboxa}{1mm}{\breite}%
    \ROUND[2]{\breite}{\Breite}%
    \LENGTHDIVIDE{\ht\tmpboxa}{1mm}{\hoehe}%
    \ROUND[2]{\hoehe}{\Hoehe}%
    \begin{picture}(\breite mm, \hoehe mm)%
        \put(0,0){\makebox(0,0)[bl]{\usebox{\tmpboxa}}}%
        \put(1mm,1mm){\makebox(0,0)[bl]{\fcolorbox{black}{black!15}{\strut \Breite\,mm $\times$ \Hoehe\,mm}}}%
    \end{picture}%  
    \\
    \blindtext
    \clearpage\noindent
    \savebox{\tmpboxa}{%
        \rule{\textwidth}{50mm}%
    }%
    \begin{picture}(\textwidth, 50mm)%
        \put(0,0){\makebox(0,0)[bl]{\usebox{\tmpboxa}}}%
        \put(1mm,1mm){\makebox(0,0)[bl]{\fcolorbox{black}{black!15}{\strut 121.25\,mm $\times$ 50\,mm}}}%
    \end{picture}%
    \\
    \blindtext
\end{document}

答案1

如果你

    \savebox{\tmpboxa}{\rule{\textwidth}{50mm}}% This is where the image will be includegraphicsed
\setbox0\hbox{\LENGTHDIVIDE{\wd\tmpboxa}{1mm}{\breite}%
    \ROUND[2]{\breite}{\Breite}%
    \LENGTHDIVIDE{\ht\tmpboxa}{1mm}{\hoehe}%
    \ROUND[2]{\hoehe}{\Hoehe}}\showoutput\showbox0

你会看到的

> \box0=
\hbox(0.0+0.0)x6.66666
.\glue 3.33333 plus 1.66666 minus 1.11111
.\glue 3.33333 plus 1.66666 minus 1.11111

正如您所怀疑的,这些命令添加了两个空格(可能%在代码的行尾缺失)。如果您想使用它们,一个简单的解决方法是将移动\noindent到前面\begin{picture},这样计算就会在垂直模式下进行,而空格会被忽略。

该包显然不期望在水平模式下进行计算,它需要数十次%\relax添加以防止出现空白,但在这种情况下,您只需修复\LENGTHDIVIDE并且两个空格就会消失:

加载包后添加此项。

\makeatletter
\def\LENGTHDIVIDE#1#2#3{%
       \begingroup
       \cctr@lengtha=#1\relax
       \cctr@lengthb=#2\relax
       \edef\cctr@tempa{\expandafter\strip@pt\cctr@lengtha}%
       \edef\cctr@tempb{\expandafter\strip@pt\cctr@lengthb}%
       \DIVIDE{\cctr@tempa}{\cctr@tempb}{#3}%
       \@OUTPUTSOL{#3}}
\makeatother

相关内容