如何强制使用 itemize 对齐文本

如何强制使用 itemize 对齐文本

我有两个看起来相似的句子,我想将某些文本“推送”到相同的 x 坐标。

\documentclass[12pt]{article}
\usepackage{amsmath, amsfonts}
\begin{document}
    \begin{itemize}
    \item Given $p = 4k+1$ find $(a,b)$ such that $p = a^2 + b^2$ 
    \item Given $n \in \mathbb{N}$ find $(x,y,z)$ such that $n = x^2 + y^2 + z^2$
    \end{itemize}
\end{document}

我想将单词“find”和“such that”移动到两个句子上的特定 x 坐标,以便两个句子对齐。

在此处输入图片描述

答案1

tabto软件包可以提供帮助。只需确保制表位置位于当前位置的右侧即可。

\documentclass[12pt]{article}
\usepackage{amsmath, amsfonts, tabto}
\begin{document}
    \begin{itemize}
    \item Given $p = 4k+1$ \tabto{3.4cm}find $(a,b)$ \tabto{6cm}such that $p = a^2 + b^2$ 
    \item Given $n \in \mathbb{N}$ \tabto{3.4cm}find $(x,y,z)$ \tabto{6cm}such that $n = x^2 + y^2 + z^2$
    \end{itemize}
\end{document}

在此处输入图片描述

如果想要使用文本的自然间距作为制表符,则以下方法可行。它\savetab{ID}在第一个\item\usetab{ID}其余 中使用\item来设置和调用制表符。它还需要\wideas{wide-text}{narrow-text}(仅在第一个 中根据需要使用\item)以防文本的最宽实例不在第一个项目中。

\documentclass[12pt]{article}
\usepackage{amsmath, amsfonts, tabto}
\def\savetab#1{\tabto*{0cm}\expandafter\edef\csname tab#1\endcsname{\TabPrevPos}%
  \tabto{\TabPrevPos}}
\def\usetab#1{\tabto{\csname tab#1\endcsname}\ignorespaces}
\def\wideas#1#2{\setbox0=\hbox{#1}\makebox[\wd0][l]{#2}}
\begin{document}
\begin{itemize}
\item Given $p = 4k+1$ \savetab{A} find \wideas{$(x,y,z)$}{$(a,b)$} 
  \savetab{B} such that $p = a^2 + b^2$ 
\item Given $n \in \mathbb{N}$ \usetab{A} find $(x,y,z)$ 
  \usetab{B} such that $n = x^2 + y^2 + z^2$
\end{itemize}
\end{document}

在此处输入图片描述

答案2

您可以使用makebox创建一个适当宽度的框来获得所需的对齐:

在此处输入图片描述

代码:

\documentclass[12pt]{article}
\usepackage{amsmath, amsfonts}
\usepackage{calc}

\newcommand*{\AsWideAs}[3][l]{%
    % #1 = alignment: l, r, c
    % #2 = content whose width this is supposed to match
    % #3 = content to be output
    \makebox[\widthof{#2}][#1]{#3}%
}%
\begin{document}
    \begin{itemize}
    \item Given $p = 4k+1$  find \AsWideAs{$(x,y,z)$}{$(a,b)$} such that $p = a^2 + b^2$ 
    \item Given \AsWideAs{$p = 4k+1$}{$n \in \mathbb{N}$} find $(x,y,z)$ such that $n = x^2 + y^2 + z^2$
    \end{itemize}
\end{document}

相关内容