我有两个看起来相似的句子,我想将某些文本“推送”到相同的 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}