如何在枚举环境中使用命令 \valign?

如何在枚举环境中使用命令 \valign?

从这个问题如何获取小页面的高度来设置另一个小页面的高度? 我发现 @egreg 的回答很有用。有没有办法

  1. 第一列要与顶部对齐吗?
  2. 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}

在此处输入图片描述

相关内容