我正在使用tufte-book
具有名为的环境的类来排版我的文档marginfigure
。这很好,但有时它与文档中的图片不太相符。例如在这个 MW 中:
% !TEX TS-program = xelatex
% !TEX encoding = UTF-8
\documentclass{biditufte-book}
\usepackage{ptext}
\usepackage{xcolor}
\usepackage{tikz}
\usetikzlibrary{calc,patterns,decorations.pathmorphing,arrows.meta,decorations.markings}
\usepackage[localise=on]{xepersian}
\settextfont{Times New Roman}
\setdigitfont{Times New Roman}
\begin{document}
\chapter{مشاهدهپذیری}
\ptext[1-4]
\section{مقدمه}
\begin{marginfigure}
\centering
\begin{tikzpicture}[domain=-2:2]
\draw[->] (-2,0) -- (2,0) node[right] {$x$};
\draw[->] (0,-2) -- (0,2) node[above] {$y$};
\coordinate (o) at (0,0);
\coordinate (a) at (1,{sin(1 r)});
\coordinate (b) at (-1,{sin(-1 r)});
\draw[dashed] (a|-o) node[below] {$x$} -- (a) -- (a-|o) node[left] {$f(x)$};
\draw[dashed] (b-|o) node[right] {$-f(x)$} -- (b) -- (b|-o) node[above] {$-x$};
\draw[color=blue] plot (\x,{sin(\x r)});
\end{tikzpicture}
\caption{ نمونه ای از یک تابع فرد}
\end{marginfigure}
\begin{marginfigure}
\centering
\begin{tikzpicture}[domain=-2:2]
\draw[->] (-2,0) -- (2,0) node[right] {$x$};
\draw[->] (0,-2) -- (0,2) node[above] {$y$};
\coordinate (o) at (0,0);
\coordinate (a) at (1,{cos(1 r)});
\coordinate (b) at (-1,{cos(-1 r)});
\draw[dashed] (a|-o) node[below] {$x$} -- (a) -- (a-|o);
\draw[dashed] (b-|o) node[above] {$f(x)$} -- (b) -- (b|-o) node[below] {$-x$};
\draw[color=blue] plot (\x,{cos(\x r)});
\end{tikzpicture}
\caption{ نمونه ای از یک تابع زوج}
\end{marginfigure}
\section{مقدمه}
\ptext[1]
\end{document}
我的图片没有完全显示在页面上。有没有什么方法可以防止这种情况发生?
答案1
宏由\marginpar
提供,它使图形的中心与文本的基线对齐。这意味着图形的底部可以突出到文本区域下方。可以使用 将其升高,但必须首先确定页面上剩余多少空间。minipage
\marginfigure
\raisebox
这可以通过多种方式实现,但最简单的是使用tikzpagenodes
。
注意:我无法让 biditufte-book 工作,因此改用 tufte-book。
\documentclass{tufte-book}
\usepackage{tikzpagenodes}
\usepackage{showframe}% MWE only
\usepackage{lipsum}% MWE only
\newlength{\DistanceToBottom}
\newcommand{\GetDistanceToBottom}{\tikz[remember picture,overlay]{%
\pgfextracty{\DistanceToBottom}{\pgfpointdiff{\pgfpointanchor{current page text area}{south}}%
{\pgfpointorigin}}%
\global\DistanceToBottom=\DistanceToBottom}}
\makeatletter
\renewenvironment{@tufte@margin@float}[2][-1.2ex]%
{\FloatBarrier% process all floats before this point so the figure/table numbers stay in order.
\begin{lrbox}{\@tufte@margin@floatbox}%
\begin{minipage}{\marginparwidth}%
\@tufte@caption@font%
\def\@captype{#2}%
\hbox{}\vspace*{#1}%
\@tufte@caption@justification%
\@tufte@margin@par%
\noindent%
}
{\end{minipage}%
\end{lrbox}%
\marginpar{\GetDistanceToBottom
\ifdim\DistanceToBottom>\dp\@tufte@margin@floatbox
\usebox{\@tufte@margin@floatbox}%
\else
\raisebox{\dimexpr \dp\@tufte@margin@floatbox-\DistanceToBottom}%
{\usebox{\@tufte@margin@floatbox}}%
\fi
}}
\makeatother
\begin{document}
\noindent\rule{1em}{40\baselineskip}
\begin{marginfigure}
\rule{\marginparwidth}{20\baselineskip}
\end{marginfigure}
\the\DistanceToBottom\par
\lipsum[1-3]
\end{document}