fmarotta / kaobook

A LaTeX class for books, reports or theses based on https://github.com/kenohori/thesis and https://github.com/Tufte-LaTeX/tufte-latex.
https://github.com/fmarotta/kaobook
LaTeX Project Public License v1.3c
852 stars 183 forks source link

marginfigure and margintable do not compile #256

Open esarradj opened 2 years ago

esarradj commented 2 years ago

Description

If a marginfigure or margintable environment is present, LaTeX stops with an error.

Minimal Working Example

\documentclass{kaobook}
\usepackage[english]{babel}
\usepackage{blindtext}
\usepackage{kaobiblio}
\usepackage{kaotheorems}
\usepackage{kaorefs}

\begin{document}

\title{Bug Report}
\author{Author}
\date{\today}

\frontmatter
\maketitle
\mainmatter
\setchapterstyle{kao}

\chapter{First Chapter}
\blindtext
\begin{marginfigure}
    \blindtext
\end{marginfigure}

\end{document}

Expected behavior:

Should compile without error.

Actual behavior:

Compilation stops with (see below)

...
(Font)              scaled to size 7.76001pt on input line 22.
! Missing number, treated as zero.
<to be read again> 
                   \vskip 
l.22    \blindtext

A number should have been here; I inserted `0'.
(If you can't figure out why I needed to see a number,
look up `weird error' in the index to The TeXbook.)

! Illegal unit of measure (pt inserted).
<to be read again> 
                   \vskip 
l.22    \blindtext

Dimensions can be in units of em, ex, in, pt, pc,
cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one!
I'll assume that you meant to say pt, for printer's points.
To recover gracefully from this error, it's best to
delete the erroneous units; e.g., type `2' to delete
two letters. (See Chapter 27 of The TeXbook.)

LaTeX Font Info:    Font shape `OT1/zpltlf/m/n' will be
(Font)              scaled to size 9.70001pt on input line 23.
LaTeX Font Info:    Font shape `OT1/zpltlf/m/n' will be
(Font)              scaled to size 7.08101pt on input line 23.
LaTeX Font Info:    Font shape `OT1/zpltlf/m/n' will be
(Font)              scaled to size 5.335pt on input line 23.

LaTeX Warning: Marginpar on page 1 moved.

! Missing number, treated as zero.
<to be read again> 
                   \vskip 
l.23 \end{marginfigure}

A number should have been here; I inserted `0'.
(If you can't figure out why I needed to see a number,
look up `weird error' in the index to The TeXbook.)

! Illegal unit of measure (pt inserted).
<to be read again> 
                   \vskip 
l.23 \end{marginfigure}

Dimensions can be in units of em, ex, in, pt, pc,
cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one!
I'll assume that you meant to say pt, for printer's points.
To recover gracefully from this error, it's best to
delete the erroneous units; e.g., type `2' to delete
two letters. (See Chapter 27 of The TeXbook.)

LaTeX Warning: Marginpar on page 1 moved.

LaTeX Font Info:    Font shape `T1/zpllf/m/sl' will be
(Font)              scaled to size 9.70001pt on input line 25.
\openout4 = `minimal.mw'.

[1

] (./minimal.mw)
\openout4 = `minimal.mw'.

Package atveryend Info: Empty hook `BeforeClearDocument' on input line 25.
Package atveryend Info: Empty hook `AfterLastShipout' on input line 25.
 (./minimal.aux)
Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 25.
Package atveryend Info: Empty hook `AtEndAfterFileList' on input line 25.
\openout4 = `minimal.mw'.

\openout4 = `minimal.mw'.

\openout4 = `minimal.bcf'.
...

Additional Information

The error goes away, if b9300e52bb7172604b5b2be56d4449728a48907c is reverted. Tested on standard Ubuntu 20.04 TeXLive.

fmarotta commented 2 years ago

I cannot reproduce it, the example compiles fine for me. Which kaobook version are you using?

By the way, the marginfigure environment is not intended for text, but for figures; I don't know if this could be the cause of the problem. If you use \marginnote instead, it might just work (unless you have a particular use-case for putting text in a marginfigure).

esarradj commented 2 years ago

I cloned the repo and was using the latest version of kaobook and have tried many earlier versions to detect what the problem was. This way I found also the commit I have reverted to make it work.

I want to use marginfigure for figures indeed. I used text only for the purpose of the MWE.

If it works for and for me not I suspect that it may have something to do with the versions of some packages that may be different. I am using vanilla Ubuntu 20.04 LTS which is updated daily and the present texlive version is 2019.20200218-1

sparusaurata commented 1 year ago

Same error here, and @esarradj's hack works too. The error seems to come from the redefinition of the \marginskip command:

I'm not a LaTeX specialist enough to find out what the problem is...


EDIT: the error comes from the \vspace{#1 - \baselineskip}, if I write \vspace{1cm - \baselineskip} somewhere else it raises the same error. So I temporarily replaced this part with \vspace{#1}\vspace{-\baselineskip}}.