7

If I write

\noindent\vskip 0ex plus 2ex\includegraphics[width={\textwidth plus 2pt minus 2pt}, angle=0]{J2-23-1}

it is correct

However, if I write

\noindent\vskip 0ex plus 2ex\includegraphics[width={\textwidth plus 0.02\textwidth minus 0.02\textwidth}, angle=0]{J2-23-1}

it said "missing number treated as zero".

However, if I included \usepackage[final]{pdfpages} even if I do not use it, the above error message disappeared.

Could anyone tell me what is wrong?

3
  • 1
    Welcome! Probably pdfpages loads calc. Does loading calc instead make the error go away?
    – cfr
    Apr 8, 2016 at 3:10
  • What should \noindent\vskip 0ex plus 2ex do?
    – egreg
    Apr 8, 2016 at 10:10
  • egreg: I have several images of roughly the width as the page width but with different height. LaTeX arranges them into pages. However, sometimes an image can fit into one page if it is slightly smaller/ or if the space between images can be slightly adjusted.......i.e. I am trying to make glue to both horizontal and vertical directions. Hope that explains what I am doing.
    – watv
    Apr 11, 2016 at 11:10

1 Answer 1

7

A glue specification is not allowed as width or height in \includegraphics, it does not support flexible dimensions.

In the first case, plus 2pt minus 2pt goes into the output two times:

\documentclass{article}
\usepackage{graphicx}
\begin{document}
  \noindent
  \includegraphics[
    width={\textwidth plus 2pt minus 2pt},
    angle=0
  ]{example-image}
\end{document}

Result

If package calc is used, then its \setlength internally uses a length register for assignment, thus the glue parts are read and consumed, but never used.

Also in the second case, the glue specifications are set as normal text (without package calc): plus 0.02 is text, then \textwidth is a register, which starts an assignment, but the following m is not valid number for a dimen assignment and causes the error message.

-> Avoid glue specifications in the options of \includegraphics. They do not have a purpose and are only causing trouble. Skip (length) registers can be used nevertheless, they are internally coerced to dimen registers ignoring the glue parts. This can be used as workaround, if the glue specifications cannot be avoided (coming from some user macros or whatever):

\includegraphics[width=\glueexpr(\textwidth plus ... minus ...)\relax, ...]{...}
6
  • Why in the first case "plus 2pt minus 2pt goes into the output two times"? Why two times? I did not see them in my output....perhapse covered by other images....
    – watv
    Apr 11, 2016 at 11:15
  • so..the conclusion is: I cannot use glue for includegraphics?
    – watv
    Apr 11, 2016 at 11:17
  • @watv Yes. Graphics, boxes, ... require fixed dimensions. Apr 11, 2016 at 15:48
  • @watv The number of plus 2pt minus 2pt depends on the used options and the implementation. Apr 11, 2016 at 15:49
  • now I use \includegraphics[width=\glueexpr(\textwidth plus ... minus ...)\relax, ...]{...} and it works fine. But a question: why there is a "relax" at the very end? You said "Graphics, boxes, ... require fixed dimensions" but why can this work?
    – watv
    Apr 11, 2016 at 21:06

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .