我希望字母与图形顶部对齐。我不确定该怎么做。我认为选择环境与枚举环境类似,但我不确定如何修改它。
它看起来是这样的:
这就是我的愿望:
\documentclass[%
12pt,
a4paper,
]{exam}
\newlength{\figsize}
\setlength{\columnsep}{0pt}
\usepackage{tikz}
\usepackage{multicol}
\newcommand{\diagram}{
\begin{tikzpicture}
\draw[rounded corners] (-2.0cm, 5cm) rectangle (5cm,-2.0cm);
\end{tikzpicture}
}
\begin{document}
\begin{questions}
\pointsinmargin\pointformat{}
\setlength{\figsize}{0.35\textwidth}
\question[1]%
Here is a question that fills up some lines.
\begin{multicols}{2}
\begin{choices}
\choice \begin{center}\resizebox{\figsize}{!}{\diagram}\end{center}
\choice \begin{center}\resizebox{\figsize}{!}{\diagram}\end{center}
\choice \begin{center}\resizebox{\figsize}{!}{\diagram}\end{center}
\choice \begin{center}\resizebox{\figsize}{!}{\diagram}\end{center}
\end{choices}
\end{multicols}
\end{questions}
\end{document}
ps 如果可以根据字母的列宽自动设置 \figsize A.
,那就太好了,但是我在 multicol 文档中找不到任何包含列宽的内容。
答案1
您可以使用baseline
键移动 的基线tikzpicture
。您可以使用该键current bounding box
来引用当前图片的大小。使用calc
库,我们可以将该点向下移动 的高度,\strutbox
以获得与字母相比不错的顶部对齐效果。
要自动设置,\figsize
您可以将其存储M.
在一个框内(M 很可能是字体中最宽的字母),然后将设置\figsize
为当前线宽减去该框的宽度(使用\dimexpr
这些东西是可能的)。
完整代码:
\documentclass[%
12pt,
a4paper,
]{exam}
\newlength{\figsize}
\setlength{\columnsep}{0pt}
\usepackage{tikz}
\usepackage{multicol}
\usetikzlibrary{calc}
\makeatletter
\newcommand{\diagram}
{%
\setfigsize
\begin{tikzpicture}[baseline={($(current bounding box.north)-(0,\ht\strutbox)$)}]
\draw[rounded corners] (0,0) rectangle (\figsize,\figsize);
\end{tikzpicture}%
}
\newcommand*\setfigsize
{%
\sbox0{M.}% M should be the widest letter
\setlength\figsize{\dimexpr\linewidth-\wd0\relax}%
}
\makeatother
\begin{document}
\begin{questions}
\pointsinmargin\pointformat{}
\setlength{\figsize}{0.35\textwidth}
\question[1]%
Here is a question that fills up some lines.
\begin{multicols}{2}
\begin{choices}
\choice \begin{center}\diagram\end{center}
\choice \begin{center}\diagram\end{center}
\choice \begin{center}\diagram\end{center}
\choice \begin{center}\diagram\end{center}
\end{choices}
\end{multicols}
\end{questions}
\end{document}
如果您想要将图像文件顶部对齐,则可以使用包\adjustimage
中的adjustbox
而不是\includegraphics
(请注意,\adjustimage
不使用可选参数,而是强制参数,它支持 的所有选项graphicx
以及adjustbox
特定选项)。如果您想要将任意内容顶部对齐(这也适用于tikzpicture
),则可以使用\adjustbox{valign=t}{<stuff>}
。
例子:
\documentclass[%
12pt,
a4paper,
]{exam}
\newlength{\figsize}
\setlength{\columnsep}{0pt}
\usepackage{adjustbox}
\usepackage{multicol}
\makeatletter
\newcommand{\diagram}
{%
\setfigsize
\adjustimage{valign=t, width=\figsize}{example-image-duck}%
}
\newcommand*\setfigsize
{%
\sbox0{M.}% M should be the widest letter
\setlength\figsize{\dimexpr\linewidth-\wd0\relax}%
}
\makeatother
\begin{document}
\begin{questions}
\pointsinmargin\pointformat{}
\setlength{\figsize}{0.35\textwidth}
\question[1]%
Here is a question that fills up some lines.
\begin{multicols}{2}
\begin{choices}
\choice \begin{center}\diagram\end{center}
\choice \begin{center}\diagram\end{center}
\choice \begin{center}\diagram\end{center}
\choice \begin{center}\diagram\end{center}
\choice \begin{center}\adjustbox{valign=t}{\rule{10pt}{50pt}}\end{center}
\end{choices}
\end{multicols}
\end{questions}
\end{document}
结果:
答案2
解决方案\vspace{-\baselineskip}
\documentclass[%
12pt,
a4paper,
]{exam}
\newlength{\figsize}
\setlength{\columnsep}{0pt}
\usepackage{tikz}
\usepackage{multicol}
\newcommand{\diagram}{
\begin{tikzpicture}
\draw[rounded corners] (-2.0cm, 5cm) rectangle (5cm,-2.0cm);
\end{tikzpicture}
}
\begin{document}
\begin{questions}
\pointsinmargin\pointformat{}
\setlength{\figsize}{0.35\textwidth}
\question[1]%
Here is a question that fills up some lines.
\begin{multicols}{2}
\begin{choices}
\choice \mbox{}\vspace{-\baselineskip}
\begin{center}\resizebox{\figsize}{!}{\diagram}\end{center}
\choice \mbox{}\vspace{-\baselineskip}
\begin{center}\resizebox{\figsize}{!}{\diagram}\end{center}
\choice \mbox{}\vspace{-\baselineskip}
\begin{center}\resizebox{\figsize}{!}{\diagram}\end{center}
\choice \mbox{}\vspace{-\baselineskip}
\begin{center}\resizebox{\figsize}{!}{\diagram}\end{center}
\end{choices}
\end{multicols}
\end{questions}
\end{document}