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 询问为什么\vbox
和minipage
。我最初尝试\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 只是为了显示盒子的参考点。