从这个问题如何获取小页面的高度来设置另一个小页面的高度? 我发现 @egreg 的回答很有用。有没有办法
- 第一列要与顶部对齐吗?
- tikzpicture 要相对于第一列设置在中心吗?
\documentclass[a4paper,11pt]{article}
\usepackage{enumitem}
\usepackage{tikz}
\begin{document}
\begin{enumerate}
\item
\valign{#\cr
\hsize=0.49\linewidth
Text\newline
Text\newline
Text\newline
Text\newline
\cr
\noalign{\hfill}
\hsize=0.49\linewidth
\centering
\begin{tikzpicture}
\draw[->] (-0.75,0) -- (pi,0) node[below] {$x$};
\draw[->] (0,-0.5) -- (0,2) node[left] {$y$};
\fill (0,0) circle[radius=0.025] node[below left] {$O$};
\end{tikzpicture}
\cr
}
\item
\valign{#\cr
\hsize=0.49\linewidth
Text\newline
Text\newline
Text\newline
Text\newline
Text\newline
Text\newline
Text\newline
Text\newline
Text\newline
Text\newline
Text\newline
Text\newline
\cr
\noalign{\hfill}
\hsize=0.49\linewidth
\centering
\begin{tikzpicture}
\draw[->] (-0.75,0) -- (pi,0) node[below] {$x$};
\draw[->] (0,-0.5) -- (0,2) node[left] {$y$};
\fill (0,0) circle[radius=0.025] node[below left] {$O$};
\end{tikzpicture}
\cr
}
\end{enumerate}
\end{document}
答案1
您可以使用adjustbox
:
\documentclass[a4paper,11pt]{article}
\usepackage{enumitem}
\usepackage{adjustbox}
\usepackage{tikz}
\usepackage{lipsum} % for mock text
\begin{document}
\begin{enumerate}
\item
\adjustbox{valign=t}{\valign{#\cr
\hsize=0.49\linewidth
\lipsum[4][1-2]
\cr
\noalign{\hfill}
\hsize=0.49\linewidth
\centering
\begin{tikzpicture}
\draw[->] (-0.75,0) -- (pi,0) node[below] {$x$};
\draw[->] (0,-0.5) -- (0,2) node[left] {$y$};
\fill (0,0) circle[radius=0.025] node[below left] {$O$};
\end{tikzpicture}
\cr
}}
\item
\adjustbox{valign=t}{\valign{#\cr
\hsize=0.49\linewidth
\lipsum[4][1-2] \lipsum[4][1-2]
\lipsum[4][1-2] \lipsum[4][1-2]
\lipsum[4][1-2] \lipsum[4][1-2]
\cr
\noalign{\hfill}
\hsize=0.49\linewidth
\centering
\begin{tikzpicture}
\draw[->] (-0.75,0) -- (pi,0) node[below] {$x$};
\draw[->] (0,-0.5) -- (0,2) node[left] {$y$};
\fill (0,0) circle[radius=0.025] node[below left] {$O$};
\end{tikzpicture}
\cr
}}
\end{enumerate}
\end{document}
答案2
以下代码将数字与左列的第一行对齐,同时两列垂直居中。首先,通过\vtop
框内的内容排版左列,使其与第一行的基线对齐。然后,\valign
通过 移动\raisebox
。-\height
将内容完全移动到基线下方,\dp\valignalign@box
并将其向上移动,使基线与\vtop
单独处于同一位置。
为了使两列垂直居中,我使用了\vfil#\vfil\cr
前言\valign
。由于基本上相同的代码使用了两次,所以我将其放入宏中。
\documentclass[a4paper,11pt]{article}
\usepackage{enumitem}
\usepackage{tikz}
\makeatletter
\newsavebox\valignalign@box
\newcommand\valignalign[4]
{%
\setbox\valignalign@box\vtop{\hsize=#1\linewidth#2\par}%
\raisebox{\dimexpr-\height+\dp\valignalign@box\relax}{%
\valign{\vfil##\vfil\cr
\hsize=#1\linewidth
\unvbox\valignalign@box
\cr
\noalign{\hfil}%
\hsize=#3\linewidth
#4%
\cr
}}%
}
\makeatother
\begin{document}
\begin{enumerate}
\item
\valignalign
{.49}
{%
Text\newline
Text\newline
Text\newline
Text\newline
}
{.49}
{%
\centering
\begin{tikzpicture}
\draw[->] (-0.75,0) -- (pi,0) node[below] {$x$};
\draw[->] (0,-0.5) -- (0,2) node[left] {$y$};
\fill (0,0) circle[radius=0.025] node[below left] {$O$};
\end{tikzpicture}%
}%
\item
\valignalign
{.49}
{%
Text\newline
Text\newline
Text\newline
Text\newline
Text\newline
Text\newline
Text\newline
Text\newline
Text\newline
Text\newline
}
{.49}
{%
\centering
\begin{tikzpicture}
\draw[->] (-0.75,0) -- (pi,0) node[below] {$x$};
\draw[->] (0,-0.5) -- (0,2) node[left] {$y$};
\fill (0,0) circle[radius=0.025] node[below left] {$O$};
\end{tikzpicture}%
}%
\end{enumerate}
\end{document}