重新调整环境

重新调整环境

cwpuzzle我正在使用包 (创建填字游戏http://www.gerd-neugebauer.de/software/TeX/cwpuzzle/en/)。

我需要以更小的格式显示解决方案(比如,原始尺寸的 50%)。

我尝试使用scalebox

\scalebox{.5}{
\begin{Puzzle}{5}{5}%
|[][Sf]S|[][Sf]A|[][Sf]T|[][Sf]O|[][Sf]R|.
|[][Sf]A|[][Sf]R|[][Sf]E|[][Sf]P|[][Sf]O|.
|[][Sf]T|[][Sf]E|[][Sf]N|[][Sf]E|[][Sf]T|.
|[][Sf]O|[][Sf]P|[][Sf]E|[][Sf]R|[][Sf]A|.
|[][Sf]R|[][Sf]O|[][Sf]T|[][Sf]A|[][Sf]S|.
\end{Puzzle}
}

然而,这并没有产生预期的效果,因为人们看到的不是谜题,而是一系列内部cwpuzzle选项。

将拼图重新缩放至较小尺寸的正确方法是什么?

答案1

修订下面,在答案被接受后添加。

您需要将拼图放在 中\vbox。当然,如果您希望将其视为水平对象,则控制宽度的唯一方法是将 放在\vbox内部minipage

通过这种组合,人们可以将缩小尺寸的拼图放置在左上角,就像一个 一样\hbox

\documentclass{article}
\usepackage[pass,showframe]{geometry}
\usepackage{cwpuzzle,graphicx}
\begin{document}
\noindent\begin{minipage}{.7in}
\setbox0=\vbox{
\begin{Puzzle}{5}{5}%
|[][Sf]S|[][Sf]A|[][Sf]T|[][Sf]O|[][Sf]R|.
|[][Sf]A|[][Sf]R|[][Sf]E|[][Sf]P|[][Sf]O|.
|[][Sf]T|[][Sf]E|[][Sf]N|[][Sf]E|[][Sf]T|.
|[][Sf]O|[][Sf]P|[][Sf]E|[][Sf]R|[][Sf]A|.
|[][Sf]R|[][Sf]O|[][Sf]T|[][Sf]A|[][Sf]S|.
\end{Puzzle}
}
\scalebox{.5}{\copy0}
\end{minipage}
Normal text
\end{document}

在此处输入图片描述


修订:

egreg 询问为什么\vboxminipage。我最初尝试\hbox失败了,所以我求助于\vbox上述方法。但是,我原来的方法肯定是错误的。这里有一种\hbox方法有效:

\documentclass{article}
\usepackage[pass,showframe]{geometry}
\usepackage{cwpuzzle,graphicx}
\begin{document}
\noindent
\setbox0=\hbox{%
\begin{Puzzle}{5}{5}%
|[][Sf]S|[][Sf]A|[][Sf]T|[][Sf]O|[][Sf]R|.
|[][Sf]A|[][Sf]R|[][Sf]E|[][Sf]P|[][Sf]O|.
|[][Sf]T|[][Sf]E|[][Sf]N|[][Sf]E|[][Sf]T|.
|[][Sf]O|[][Sf]P|[][Sf]E|[][Sf]R|[][Sf]A|.
|[][Sf]R|[][Sf]O|[][Sf]T|[][Sf]A|[][Sf]S|.
\end{Puzzle}
}%
\scalebox{.5}{\copy0}
Normal text
\end{document}

在此处输入图片描述

答案2

标准Puzzle环境产生一个居中对象,因为它执行\PuzzlePre\PuzzlePost,定义为

\newcommand\PuzzlePre{%
    \par\noindent\mbox{}\hfill
}
\newcommand\PuzzlePost{%
    \hfill\null\par\noindent
}

该环境不能在另一个命令的参数中使用,因为它依赖于改变类别代码。

您可以利用\PuzzlePre\PuzzlePost宏来定义一个Puzzle*环境,该环境只生成一个可缩放的框,然后您可以随意放置它。前导可选参数是比例因子(默认为 1,表示不缩放)。

\documentclass{article}
\usepackage{cwpuzzle,graphicx}

\newsavebox{\puzzlebox}

\newenvironment{Puzzle*}[3][1]
 {%
  \def\PuzzlePre{\begin{lrbox}{\puzzlebox}}%
  \def\PuzzlePost{\end{lrbox}\scalebox{#1}{\usebox{\puzzlebox}}}%
  \Puzzle{#2}{#3}%
 }
 {\endPuzzle}

\begin{document}

x\begin{Puzzle*}[0.5]{5}{5}%
|[][Sf]S|[][Sf]A|[][Sf]T|[][Sf]O|[][Sf]R|.
|[][Sf]A|[][Sf]R|[][Sf]E|[][Sf]P|[][Sf]O|.
|[][Sf]T|[][Sf]E|[][Sf]N|[][Sf]E|[][Sf]T|.
|[][Sf]O|[][Sf]P|[][Sf]E|[][Sf]R|[][Sf]A|.
|[][Sf]R|[][Sf]O|[][Sf]T|[][Sf]A|[][Sf]S|.
\end{Puzzle*}y

\end{document}

我添加了 x 和 y 只是为了显示盒子的参考点。

在此处输入图片描述

相关内容