我想生成一个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}