Estou usando a tufte-book
classe. Se eu redefinir o \maketitlepage
comando, as figuras param de ficar centralizadas. Aqui está um MWE reproduzindo o problema:
\documentclass[justified, symmetric, titlepage]{tufte-book}
\usepackage{graphicx, lipsum}
\usepackage[english]{babel}
\makeatletter
\renewcommand{\maketitlepage}{
\thispagestyle{empty}
{\fontsize{15}{15}\scshape\@author\par}
\vspace{5cm}
{\fontsize{37}{37}\scshape\@title}
\newpage
\pagenumbering{arabic}}
\makeatother
\title{Title}
\author{Author}
\begin{document}
\maketitle
\lipsum[1-4]
\begin{figure}
\centering
\includegraphics[width=0.4\textwidth]{example-image-a}
\end{figure}
\lipsum[5]
\end{document}
E este é o resultado (indesejado)
Responder1
Eu sugiro que você escreva um relatório de bug na página do tufte, por favor.
Por favor, veja o seguinte código um pouco alterado (importante aqui eu adicionei a opção debug
e adicionei mais algum texto ao redor da figura para poder mostrar o culpado com mais algumas alterações (descomentando mais texto)):
\documentclass[%
justified,
symmetric,
titlepage,
debug % <=======================================================
]{tufte-book}
\usepackage{graphicx, lipsum}
\usepackage[english]{babel}
\makeatletter
\renewcommand{\maketitlepage}{
\thispagestyle{empty}
{\fontsize{15}{15}\scshape\@author\par}
\vspace{5cm}
{\fontsize{37}{37}\scshape\@title}
\newpage
\pagenumbering{arabic}}
\makeatother
\title{Title}
\author{Author}
\begin{document}
\maketitle
\lipsum[1-4]
Now follows figure in code. % <=========================================
%Now follows figure in code. % <========================================
%Now follows figure in code. Now follows figure in code.
%Now follows figure in code. Now follows figure in code.
%Now follows figure in code. Now follows figure in code.
%Now follows figure in code. Now follows figure in code.
%Now follows figure in code. Now follows figure in code.
\begin{figure}
\centering
\includegraphics[width=0.4\textwidth]{example-image-a} % [width=0.4\textwidth]
\caption{figure}
\label{fig:example}
\end{figure}
This is text after the figure in code. % <==============================
This is text after the figure in code.
This is text after the figure in code. This is text after the figure in code.
This is text after the figure in code. This is text after the figure in code.
This is text after the figure in code. This is text after the figure in code.
This is text after the figure in code. This is text after the figure in code.
\lipsum[5]
\end{document}
Então você obtém o mesmo layout que você tem
mas no arquivo de log você pode encontrar o seguinte:
Como você pode ver, o culpado é que o número de página errado odd
é even
reconhecido.
Para se livrar disso você pode descomentar as linhas comentadas para obter o código:
\documentclass[%
justified,
symmetric,
titlepage,
debug % <=======================================================
]{tufte-book}
\usepackage{graphicx, lipsum}
\usepackage[english]{babel}
\makeatletter
\renewcommand{\maketitlepage}{
\thispagestyle{empty}
{\fontsize{15}{15}\scshape\@author\par}
\vspace{5cm}
{\fontsize{37}{37}\scshape\@title}
\newpage
\pagenumbering{arabic}}
\makeatother
\title{Title}
\author{Author}
\begin{document}
\maketitle
\lipsum[1-4]
Now follows figure in code. % <=========================================
Now follows figure in code. % <========================================
Now follows figure in code. Now follows figure in code.
Now follows figure in code. Now follows figure in code.
Now follows figure in code. Now follows figure in code.
Now follows figure in code. Now follows figure in code.
Now follows figure in code. Now follows figure in code.
\begin{figure}
\centering
\includegraphics[width=0.4\textwidth]{example-image-a} % [width=0.4\textwidth]
\caption{figure}
\label{fig:example}
\end{figure}
This is text after the figure in code. % <==============================
This is text after the figure in code.
This is text after the figure in code. This is text after the figure in code.
This is text after the figure in code. This is text after the figure in code.
This is text after the figure in code. This is text after the figure in code.
This is text after the figure in code. This is text after the figure in code.
\lipsum[5]
\end{document}
Como você pode ver aqui
a figura está centralizada, porque a solução alternativa move o texto ao redor da figura para a página 2. Isso permite um reconhecimento correto da página usada que você pode ver nas informações de depuração:
Portanto, mover manualmente o código da figura para baixo ou para cima pode resolver o culpado, mas não é algo automático. Para obter o retorno automático, adicione o relatório do bug ao site do tufte.
Responder2
Além de usar marcações manuais com \forcerectofloat
e \forceversofloat
, tentei com sucesso uma solução descrita na documentação do ifoddpage
pacote:
%\usepackage{ifoddpage}% works also without this package
...
\makeatletter
\renewcommand*{\@tufte@checkoddpage}{%
\leavevmode \hbox \bgroup
\checkoddpage
\egroup
\ifoddpage%
\setboolean{@tufte@odd@page}{true}%
\else%
\setboolean{@tufte@odd@page}{false}%
\fi%
}%
\makeatother
Não verifiquei efeitos colaterais nem testei outros exemplos. No entanto, pode ser um bom ponto para começar.