UPDATED Captions width = marginparwidth & tall figures.
Figures (and tables) are floating: if they don't fit in the space left on the page, they are written on the next page.
In this case, the change from odd to even page or vice versa is not detected.
If this happens add \newpage
before the big figure to help the detection and compile twice.
% !TeX TS-program = xelatex
\documentclass[a4paper,nobib,twoside,symmetric,justified,marginals=raggedouter, notoc]{tufte-book}
\makeatletter
\newlength{\oddshift}
\newcommand{\captionatbottommargin}{% from https://tex.stackexchange.com/a/229419/161015
\long\def\@caption##1[##2]##3{%
\par
\addcontentsline{\csname ext@##1\endcsname}{##1}%
{\protect\numberline{\csname the##1\endcsname}{\ignorespaces ##2}}%
\begingroup
\@parboxrestore%
\if@minipage\@setminipage\fi%
\normalsize
\@makecaption{\csname fnum@##1\endcsname}{\ignorespaces ##3}\par
\endgroup}
\long\def\@makecaption##1##2{%
\vskip\abovecaptionskip%
\@tufte@checkoddpage%
\ifthenelse{\boolean{@tufte@odd@page}}%
{\setlength{\oddshift}{\linewidth+\marginparsep}\rlap{\hskip\oddshift\parbox{\marginparwidth}{\hskip0pt\@tufte@caption@font##1: ##2}}}%
{\setlength{\oddshift}{-\marginparwidth- \marginparsep}\rlap{\hskip\oddshift\parbox{\marginparwidth}{\@tufte@caption@font##1: ##2}}}%
\vskip\belowcaptionskip%
}%
\let\caption\@tufte@orig@caption%
\let\label\@tufte@orig@label}
\newenvironment{largetable}{%
\@tufte@checkoddpage%
\ifthenelse{\boolean{@tufte@odd@page}}%
{\begin{table}[!htbp]\vspace*{-3ex}\begin{adjustwidth}{}{-\marginparwidth-\marginparsep}\captionatbottommargin}%
{\begin{table}[!htbp]\vspace*{-3ex}\begin{adjustwidth}{-\marginparwidth-\marginparsep}{}\captionatbottommargin}}
{\end{adjustwidth}\end{table}}
\newenvironment{largefigure}{%
\@tufte@checkoddpage%
\ifthenelse{\boolean{@tufte@odd@page}}%
{\begin{figure}[htbp!]\vspace*{-3ex}\begin{adjustwidth}{}{-\marginparwidth-\marginparsep}\captionatbottommargin}%changed <<<<<<
{\begin{figure}[htbp!]\vspace*{-3ex}\begin{adjustwidth}{-\marginparwidth-\marginparsep}{}\captionatbottommargin}}
{\end{adjustwidth}\end{figure}}
\makeatother
\usepackage{booktabs}
\geometry{% normal pages
paperheight =297mm, paperwidth = 210mm, %layout=a4paper
layoutheight =240mm,layoutwidth =170mm,
textheight=38\baselineskip,
headheight=\baselineskip,
left=15mm, % right will be the same because of symmetric
bindingoffset= 5mm, % add space for binding
textwidth=90mm,
top=14mm,
marginparsep=6mm, marginparwidth=40mm,
includehead,
layoutvoffset= 28.5mm,layouthoffset= 20mm, % 297-240 = 57mm 210-170 = 40mm ->> to center smaller layout in a4
showframe=true,
showcrop=true }
\renewenvironment{fullwidth}
{\newgeometry{% full width pages
layoutheight =240mm,layoutwidth =170mm,
textheight=38\baselineskip,
headheight=\baselineskip,
left=15mm, % right will be the same because of symmetric
bindingoffset= 5mm, % add space for binding
textwidth=136mm, % 90+ 6+ 40
top=14mm,
marginparsep=0mm, marginparwidth=0mm, %changed to full width <<<<<<<<<<
includehead,
layoutvoffset= 28.5mm,layouthoffset= 20mm, % 297-240 = 57mm 210-170 = 40mm ->> to center smaller layout in a4
showframe=true,
showcrop=true }
\fancyhfoffset[LE]{0pt}
\fancyhfoffset[RO]{0pt}
}
{\restoregeometry}%
\usepackage{kantlipsum} % dummy text added
\RequirePackage{showframe} % margin lines <<<<<<<<<<<<<<<<<<<<<<<<<
\renewcommand\ShowFrameLinethickness{0.1pt}
\renewcommand\ShowFrameColor{\color{red}}
\newcommand{\textls}[2][5]{%
\begingroup\addfontfeatures{LetterSpace=#1}#2\endgroup
}
\renewcommand{\allcapsspacing}[1]{\textls[15]{#1}}
\renewcommand{\smallcapsspacing}[1]{\textls[10]{#1}}
\renewcommand{\allcaps}[1]{\textls[15]{\MakeTextUppercase{#1}}}
\renewcommand{\smallcaps}[1] {\smallcapsspacing{\scshape\MakeTextLowercase{#1}}}
\renewcommand{\textsc}[1]{\smallcapsspacing{\textsmallcaps{#1}}}
\usepackage{fontspec}
\usepackage{libertine} %<<<<<<<<<<<<<<<<
\setsansfont{TeX Gyre Heros}[Scale=MatchUppercase]
\usepackage{xspace}
\newcommand{\monthyear}{%
\ifcase\month\or janvier\or f\'{e}vrier\or mars\or avril\or mai\or juin\or
juillet\or ao\^{u}t\or septembre\or octobre\or novembre\or
d\'{e}cembre\fi\space\number\year
}
\newcommand{\blankpage}{\newpage\hbox{}\thispagestyle{empty}\newpage}
\usepackage[english,french]{babel}
\frenchbsetup{StandardLayout=true}
\addto\captionsfrench{\def\tablename{Tableau}}
\addto\captionsfrench{\def\figurename{Figure}}
\frenchbsetup{IndentFirst=false}
\usepackage{csquotes}
\begin{document}
\frenchspacing
\mainmatter
9. \kant[9]
\newpage % added <<<<<<<<<<<<<<<<<<<<<<<<<
\begin{largefigure}
\includegraphics[width=\linewidth,keepaspectratio]{Figure_1.1.jpg}%
\caption{1 Périodes de datation des diff\'{e}rentes copies originales de la Pi\`{e}ce d'Orgue BWV 532.}%
\label{fig:Synoptique}%
\end{largefigure}
\newpage % added <<<<<<<<<<<<<<<<<<<<<<<<<
\begin{largefigure}
\includegraphics[width=\linewidth,keepaspectratio]{Figure_1.1.jpg}%
\caption{2 Périodes de datation des diff\'{e}rentes copies originales de la Pi\`{e}ce d'Orgue BWV 532.}%
\label{fig:Synoptique2}%
\end{largefigure}
\newpage % added <<<<<<<<<<<<<<<<<<<<<<<<<
11. \kant[9]
\begin{largefigure}
\includegraphics[width=\linewidth,keepaspectratio]{Preludio.jpg}%
\caption{En--tête du prélude inscrit par Lorenz Sichart en 1740.}%
\label{fig:prelude}%
\end{largefigure}
12. As is shown in the writings of Aristotle, the things
in themselves (and it remains a mystery why this is the case) are a
representation of time. Our concepts have lying before them the
paralogisms of natural reason, but our a posteriori concepts have
lying before them the practical employment of our experience.
\begin{largefigure}
\includegraphics[width=\linewidth,keepaspectratio]{Fuga.jpg}%
\caption{En--tête de la fugue inscrit par Lorenz Sichart en 1740.}%
\label{fig:fugue}%
\end{largefigure}
13. \kant[13]
\end{document}
UPDATE II a very tall and wide figure.
The figure overflows the page in both directions. It is best to reduce it (with scale
) and use a single page for it.
Try
\newpage % added <<<<<<<<<<<<<<<<<<<<<<<<<
\begin{largefigure}
\includegraphics[scale=0.45]{Figure13.jpg}% changed <<<<<<<<<<
\caption{Plan formed du passage introductif (mes \`{a} 16) du pr\`{e}lude BWV 532.}%
\label{fig:Plan}%
\end{largefigure}
\newpage % added <<<<<<<<<<<<<<<<<<<<<<<<<
This is the full code of update II.
% !TeX TS-program = xelatex
\documentclass[a4paper,nobib,twoside,symmetric,justified,marginals=raggedouter, notoc]{tufte-book}
%******************************************************************************** UPDATED II
\makeatletter
\newlength{\oddshift}
\newcommand{\captionatbottommargin}{% from https://tex.stackexchange.com/a/229419/161015
\long\def\@caption##1[##2]##3{%
\par
\addcontentsline{\csname ext@##1\endcsname}{##1}%
{\protect\numberline{\csname the##1\endcsname}{\ignorespaces ##2}}%
\begingroup
\@parboxrestore%
\if@minipage\@setminipage\fi%
\normalsize
\@makecaption{\csname fnum@##1\endcsname}{\ignorespaces ##3}\par
\endgroup}
\long\def\@makecaption##1##2{%
\vskip\abovecaptionskip%
\@tufte@checkoddpage%
\ifthenelse{\boolean{@tufte@odd@page}}%
{\setlength{\oddshift}{\linewidth+\marginparsep}\rlap{\hskip\oddshift\parbox{\marginparwidth}{\hskip0pt\@tufte@caption@font##1: ##2}}}%
{\setlength{\oddshift}{-\marginparwidth- \marginparsep}\rlap{\hskip\oddshift\parbox{\marginparwidth}{\@tufte@caption@font##1: ##2}}}%
\vskip\belowcaptionskip%
}%
\let\caption\@tufte@orig@caption%
\let\label\@tufte@orig@label}
\newenvironment{largetable}{%
\@tufte@checkoddpage%
\ifthenelse{\boolean{@tufte@odd@page}}%
{\begin{table}[!htbp]\vspace*{-3ex}\begin{adjustwidth}{}{-\marginparwidth-\marginparsep}\captionatbottommargin}%
{\begin{table}[!htbp]\vspace*{-3ex}\begin{adjustwidth}{-\marginparwidth-\marginparsep}{}\captionatbottommargin}}
{\end{adjustwidth}\end{table}}
\newenvironment{largefigure}{%
\@tufte@checkoddpage%
\ifthenelse{\boolean{@tufte@odd@page}}%
{\begin{figure}[htbp!]\vspace*{-3ex}\begin{adjustwidth}{}{-\marginparwidth-\marginparsep}\captionatbottommargin}%changed <<<<<<
{\begin{figure}[htbp!]\vspace*{-3ex}\begin{adjustwidth}{-\marginparwidth-\marginparsep}{}\captionatbottommargin}}
{\end{adjustwidth}\end{figure}}
\makeatother
%*********************************************************************************************
\usepackage{booktabs}
\geometry{% normal pages
paperheight =297mm, paperwidth = 210mm, %layout=a4paper
layoutheight =240mm,layoutwidth =170mm,
textheight=38\baselineskip,
headheight=\baselineskip,
left=15mm, % right will be the same because of symmetric
bindingoffset= 5mm, % add space for binding
textwidth=90mm,
top=14mm,
marginparsep=6mm, marginparwidth=40mm,
includehead,
layoutvoffset= 28.5mm,layouthoffset= 20mm, % 297-240 = 57mm 210-170 = 40mm ->> to center smaller layout in a4
showframe=true,
showcrop=true }
\renewenvironment{fullwidth}
{\newgeometry{% full width pages
layoutheight =240mm,layoutwidth =170mm,
textheight=38\baselineskip,
headheight=\baselineskip,
left=15mm, % right will be the same because of symmetric
bindingoffset= 5mm, % add space for binding
textwidth=136mm, % 90+ 6+ 40
top=14mm,
marginparsep=0mm, marginparwidth=0mm, %changed to full width <<<<<<<<<<
includehead,
layoutvoffset= 28.5mm,layouthoffset= 20mm, % 297-240 = 57mm 210-170 = 40mm ->> to center smaller layout in a4
showframe=true,
showcrop=true }
\fancyhfoffset[LE]{0pt}
\fancyhfoffset[RO]{0pt}
}
{\restoregeometry}%
\usepackage{kantlipsum} % dummy text added
\RequirePackage{showframe} % margin lines <<<<<<<<<<<<<<<<<<<<<<<<<
\renewcommand\ShowFrameLinethickness{0.1pt}
\renewcommand\ShowFrameColor{\color{red}}
\newcommand{\textls}[2][5]{%
\begingroup\addfontfeatures{LetterSpace=#1}#2\endgroup
}
\renewcommand{\allcapsspacing}[1]{\textls[15]{#1}}
\renewcommand{\smallcapsspacing}[1]{\textls[10]{#1}}
\renewcommand{\allcaps}[1]{\textls[15]{\MakeTextUppercase{#1}}}
\renewcommand{\smallcaps}[1] {\smallcapsspacing{\scshape\MakeTextLowercase{#1}}}
\renewcommand{\textsc}[1]{\smallcapsspacing{\textsmallcaps{#1}}}
\usepackage{fontspec}
\usepackage{libertine} %<<<<<<<<<<<<<<<<
\setsansfont{TeX Gyre Heros}[Scale=MatchUppercase]
\usepackage{xspace}
\newcommand{\monthyear}{%
\ifcase\month\or janvier\or f\'{e}vrier\or mars\or avril\or mai\or juin\or
juillet\or ao\^{u}t\or septembre\or octobre\or novembre\or
d\'{e}cembre\fi\space\number\year
}
\newcommand{\blankpage}{\newpage\hbox{}\thispagestyle{empty}\newpage}
\usepackage[english,french]{babel}
\frenchbsetup{StandardLayout=true}
\addto\captionsfrench{\def\tablename{Tableau}}
\addto\captionsfrench{\def\figurename{Figure}}
\frenchbsetup{IndentFirst=false}
\usepackage{csquotes}
\begin{document}
\frenchspacing
\mainmatter
9. \kant[9]
\newpage % added <<<<<<<<<<<<<<<<<<<<<<<<<
\begin{largefigure}
\includegraphics[scale=0.45]{Figure13.jpg}%
\caption{Plan formed du passage introductif (mes \`{a} 16) du pr\`{e}lude BWV 532.}%
\label{fig:Plan}%
\end{largefigure}
\newpage % added <<<<<<<<<<<<<<<<<<<<<<<<<
10. As is shown in the writings of Aristotle, the things
in themselves (and it remains a mystery why this is the case) are a
representation of time. Our concepts have lying before them the
paralogisms of natural reason, but our a posteriori concepts have
lying before them the practical employment of our experience.
\newpage % added <<<<<<<<<<<<<<<<<<<<<<<<<
\begin{largefigure}
\includegraphics[scale=0.45]{Figure13.jpg}%
\caption{Plan formed du passage introductif (mes \`{a} 16) du pr\`{e}lude) BWV 532.}%
\label{fig:Synoptique2}%
\end{largefigure}
11. \kant[9]
\end{document}
Best Answer
The
xprintlen
package provides the means to show the length of a dimension register in more 'human' units, such ascm
ormm
, which is the default:Will use 2 significant figures (which is the default),
mm
as unit of the relevant length register.