我有一些宽表格(也可能是图形),不适合\textwidth
。如果draft
文档选项处于活动状态,则右侧会出现黑色边框,表示其宽度超过允许值。
如何计算最大宽度,即从左侧文本开始到右侧边距段落结束的距离?
我怎样才能告诉 LaTeX 尊重表格和图形的最大宽度?
\documentclass[draft]{scrartcl}
\usepackage[showframe]{geometry}
\usepackage{blindtext}
\begin{document}
\blindtext
\marginpar{This is a \texttt{marginpar} with multiple lines}
\blindtext
\begin{table}
\begin{tabular}{p{1.16\textwidth}} % <-- trial-and-error value
\blindtext
\end{tabular}
\caption{A wide table that shall extend into the right margin,
but no wider than margin notes or margin paragraphs do.}
\end{table}
\end{document}
答案1
您可以定义一个widetable
延伸到外边距的环境。(为了简化,我假设oneside
右侧有 marginpar 空间)。这样,包括标题在内的内容就可以延伸到 marginpar 空间中。
然后您可以使用@{}
来抑制列填充并:
\documentclass[draft]{scrartcl}
\usepackage[showframe]{geometry}
\usepackage{blindtext}
\makeatletter
\newenvironment{widetable}
{\table
\advance\hsize\marginparwidth
\advance\hsize\marginparsep
\@parboxrestore}
{\endtable}
\makeatother
\begin{document}
\blindtext
\marginpar{This is a \texttt{marginpar} with multiple lines}
\blindtext
\begin{widetable}
\begin{tabular}{@{}p{\linewidth}@{}} % <-- trial-and-error value
\blindtext
\end{tabular}
\caption{A wide table that shall extend into the right margin,
but no wider than margin notes or margin paragraphs do.}
\end{widetable}
\end{document}
答案2
好吧,你永远不应该让任何东西像这样渗入边距。但是,你可以通过添加以下内容来解决问题\hspace*
:
\documentclass[draft]{scrartcl}
\usepackage[showframe]{geometry}
\usepackage{blindtext}
\begin{document}
\blindtext
\marginpar{This is a \texttt{marginpar} with multiple lines}
\blindtext
\begin{table}
\begin{tabular}{p{1.16\textwidth}} % <-- trial-and-error value
\blindtext
\end{tabular}\hspace*{-0.5\textwidth}
\caption{A wide table that shall extend into the right margin,
but no wider than margin notes or margin paragraphs do.}
\end{table}
\end{document}
该值0.5\textwidth
应该是安全的,因为您的边距可能不会大于文本宽度的一半。但是,每次您在最终文档中使用此值时,薛定谔都会杀死一只小猫(立即,无需等待,也没有概率)。