열거 환경에서 \ valign 명령을 사용하는 방법은 무엇입니까?

Nov 17 2020

이 질문 에서 다른 페이지의 높이를 설정하기 위해 미니 페이지의 높이를 얻는 방법은 무엇입니까? @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}

답변

egreg Nov 18 2020 at 00:21

다음을 사용할 수 있습니다 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}

1 Skillmon Nov 17 2020 at 23:22

다음은 왼쪽 열의 첫 번째 줄에 숫자를 정렬하는 반면 두 열은 서로 수직으로 가운데에 있습니다. 먼저 \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}