是否存在涵盖文本区域和边距的预定义宽度?

是否存在涵盖文本区域和边距的预定义宽度?

是否有一个预定义的宽度可以覆盖文本和边距区域?如果我错了请纠正我,但它基本上等于\textwidth+\marginparsep+\parginparwidth

LaTeX 是否在某处提供了该功能?

如果不是,我目前在序言中这样定义它:

\newlength{\widewidth}
\setlength{\widewidth}{\textwidth+\marginparsep+\marginparwidth}

这是正确的方法吗?有什么注意事项吗?例如,如果我更改了页面的方向,是否会\widelength更改其大小以反映这一点?

答案1

一旦定义了用户长度,它将以物理单位固定,直到用户重新设置(见定义随字体大小变化而缩放的长度)。因此,定义可以随页面尺寸变化而调整的“长度”的方式是将其定义为\def随格式变化而更新的系统长度的宏,而不是\setlength将长度固定的宏。通过这种方式,\def每次调用时都会重新评估其“当前”值。

一旦学会了这一课,你的问题的下一个方面就是,\linewidth而不是\textwidth在例如切换到横向模式等时使用的适当长度。在我的 MWE 的第 1 页上,使用哪个没有区别,但在第 2 页上,可以看到定义\linewidth给出了正确的结果,而不是\textwidth结果。

最后,如果\reversemarginpar使用,如 MWE 第 3 页所示,则必须制定额外规定

\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage{pdflscape}
\usepackage[nopar]{lipsum}
  \def\wrongwidewidth{\dimexpr\textwidth+\marginparsep+\marginparwidth}%
  \def\rightwidewidth{\dimexpr\linewidth+\marginparsep+\marginparwidth}%
\begin{document}
\lipsum[1]\marginpar{This is a test of a margin par}\vspace{2cm}\par
Doesn't matter\par
\noindent\includegraphics[width=\wrongwidewidth]{test}

Doesn't matter\par
\noindent\includegraphics[width=\rightwidewidth]{test}
\begin{landscape}
  \lipsum[2]\marginpar{This is a test of a margin par}\vspace{2cm}\par
  Wrong\par
  \noindent\includegraphics[width=\wrongwidewidth]{test}

  Right\par
  \noindent\includegraphics[width=\rightwidewidth]{test}
\end{landscape}

With reverse marginpar, tricks must be done\vspace{2cm}\par\reversemarginpar
\lipsum[1]\marginpar{This is a test of a margin par}\vspace{2cm}\par
Doesn't matter\par
\noindent\makebox[\linewidth][r]{\includegraphics[width=\wrongwidewidth]{test}}

Doesn't matter\par
\noindent\makebox[\linewidth][r]{\includegraphics[width=\rightwidewidth]{test}}
\end{document}

在此处输入图片描述

在此处输入图片描述

在此处输入图片描述

相关内容