Heiko Oberdiek 帮助了我很多,他找到了解决方案必要时缩小文本。我想将此方法应用于逐字文本,如下例所示,但不知何故被禁止(出现问题 - 可能缺少 \item。)。还有其他方法可以缩小verbatim
文本以适应\linewidth
?
\documentclass{article}
\usepackage{graphicx}
\newcommand*{\restrictlinewidthbox}[1]{%
\begingroup
\sbox0{#1}%
\ifdim\wd0>\linewidth
\resizebox{\linewidth}{!}{\copy0}%
\else
\copy0 %
\fi
\endgroup
}
\setlength{\parindent}{0pt}
\begin{document}
\restrictlinewidthbox{%
\begin{verbatim}
\begin{tabular}
{|lc|c|c|c|}\hline
& \textbf{Input} & Cnstrnt 1 & Cnstrnt 2& Cnstrnt 3\\ \hline\hline
& candidate 1 & *! & & \\ \hline
& candidate 2 & & * & \\ \hline
\hand & candidate 3 & & & * \\ \hline
\end{tabular}
\end{verbatim}
}
\end{document}
答案1
您必须为此使用环境。您可以使用fancyvrb
及其设施:
\documentclass{article}
\usepackage{graphicx,fancyvrb}
\newenvironment{restrictlinewidthverb}
{\SaveVerbatim{rlwv}}
{\endSaveVerbatim
\sbox0{\BUseVerbatim{rlwv}}
\begingroup\center % don't add indentation
\ifdim\wd0>\linewidth
\resizebox{\linewidth}{!}{\copy0}%
\else
\copy0
\fi
\endcenter\endgroup}
\begin{document}
\noindent X\dotfill X
\begin{restrictlinewidthverb}
\begin{tabular}
{|lc|c|c|c|}\hline
& \textbf{Input} & Cnstrnt 1 & Cnstrnt 2& Cnstrnt 3\\ \hline\hline
& candidate 1 & *! & & \\ \hline
& candidate 2 & & * & \\ \hline
\hand & candidate 3 & & & * \\ \hline
\end{tabular}
\end{restrictlinewidthverb}
\begin{restrictlinewidthverb}
Abc
def
\end{restrictlinewidthverb}
\end{document}
当然,这只是一个例子:双重\hline
命令和类似工作表的表格是邪恶的:不要在表格中使用垂直规则,这样你的生活会更好;-)
。
答案2
该verbatimbox
软件包允许您将逐字逐句的内容塞进一个盒子里,然后您可以调整盒子的大小。
\documentclass{article}
\usepackage{graphicx}
\usepackage{verbatimbox}
\newcommand*{\restrictlinewidthbox}[1]{%
\begingroup
\sbox0{#1}%
\ifdim\wd0>\linewidth
\resizebox{\linewidth}{!}{\copy0}%
\else
\copy0 %
\fi
\endgroup
}
\setlength{\parindent}{0pt}
\begin{document}
\rule{\textwidth}{1ex}
\begin{verbbox}
\begin{tabular}
{|lc|c|c|c|}\hline
& \textbf{Input} & Cnstrnt 1 & Cnstrnt 2& Cnstrnt 3\\ \hline\hline
& candidate 1 & *! & & \\ \hline
& candidate 2 & & * & \\ \hline
\hand & candidate 3 & & & * \\ \hline
\end{tabular}
\end{verbbox}
\restrictlinewidthbox{\theverbbox}
\end{document}