缩小逐字文本

缩小逐字文本

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}

在此处输入图片描述

相关内容