左边距的标签

左边距的标签

我想生成一个label左边距带有 s 的文本,就像参考列表一样。标签可能有不同的长度。一种方法是定义一个负数\parindent,如下所示:

\parindent-12mm
\makebox[12mm][l]{A} text text text   text text text text text   text text text text   text text  text    texttexttexttext  \par 
\makebox[12mm][l]{ABC} text text text   text text text text   text text text text   text text  text    texttexttexttext 

框的目的是使文本从文本列的左边缘开始。但是,这样文本列的左边缘就不会是直的,因为 Tex 会沿着整个行(包括框)均匀地扩展或收缩空格。因此(而不是框),我需要在标签之后,以与制表符命令相同的方式移动到文本列的左边缘的命令。有这样的命令吗?

答案1

有了包,这很容易enumitem。只需定义

\SetLabelAlign{margin}{\llap{#1~~}}

并像使用它一样

\begin{description}[align=margin,labelsep=0pt]
  \item[A] text text text
  \item[ABC] text text text
\end{description}

平均能量损失

\documentclass{article}
\usepackage{enumitem}
\SetLabelAlign{margin}{\llap{#1~~}}
\usepackage{showframe} % just to show the margins
\begin{document}

\begin{description}[align=margin,labelsep=0pt]
  \item[A] text text text
  \item[ABC] text text text
\end{description}

\end{document} 

输出

在此处输入图片描述

另一个解决方案是定义

\SetLabelAlign{margin}{\llap{\makebox[12mm][l]{#1}}}

这样结果将是

在此处输入图片描述

答案2

像这样:(???)

showframe 包仅用于显示边距的位置。可以将其删除。

\documentclass{article}
\usepackage{showframe}

\begin{document}
\setlength{leftmargini}{0pt}
\begin{itemize}

  \item[A] text text text
  \item[ABC] text text text
\end{itemize}
\end{document}

在此处输入图片描述

答案3

enumitem已经提供了right标签对齐。将其与leftmargin=\labelsep

\documentclass{article}
\usepackage{enumitem}
\usepackage{showframe} % just to show the margins
\begin{document}

\begin{description}[align=right,leftmargin=\labelsep]
  \item[A] text text text
  \item[ABC] text text text
\end{description}

\end{document}

相关内容