答案1
正如布巴亞所指出的那樣,一種可能性是將“標籤”放在固定寬度的盒子中,儘管我不會“擺弄”幻影之類的東西。我已經定義了一個命令來執行此操作。毫無疑問,進一步的細化(例如自動將寬度設為最長的標籤)將是可取的。
另請注意:
- 如果您想要一個枚舉列表,我會要求一個枚舉列表,而不是手動設定標籤。
- 我不同意添加
\quad
s 以在項目標籤後面添加額外的空間。如果清單不正確,請更改\labelsep
和 (如果需要)\labelwidth
。每當您新增臨時間距命令時,您(可能)都在做錯事。
最後請注意:如果這被用於多個實例,我不會這樣做。正確地做。設定一個清單類型:設定它時您必須做的思考會在易用性和無錯誤方面一次又一次地得到回報。
兩種替代方案如下所示。顯然,我會將清單定義放在生產的序言中。
\documentclass{article}
\usepackage{enumitem}
\newcommand{\parsedescription}[2]{%
\makebox[2.5cm][l]{#1}{#2}}
\begin{document}
\section{Hand rolled}
This is a hand-rolled version
\begin{itemize}
\item Output of scanner:
\begin{enumerate}
\item\parsedescription{Identifier}{program}
\item\parsedescription{White\_Space}{' '}
\end{enumerate}
\end{itemize}
\section{Properly done}
And this is, much more semantically correct:
\newcounter{parsecounter}
\newlist{parse}{description}{1}
\setlist[parse]{style=sameline,
labelwidth=3cm,
leftmargin=!,
labelindent=1em,
font=\normalfont,
before={%
\setcounter{parsecounter}{0}%
\renewcommand\makelabel[1]{%
\stepcounter{parsecounter}%
\arabic{parsecounter}.\enspace##1}}}
\begin{itemize}
\item Output of scanner:
\begin{parse}
\item[Identifier]program
\item[White\_Space]' '
\end{parse}
\end{itemize}
\end{document}
答案2
如果您不適合使用表格,您可以隨時使用\phantom
或\hphantom
、\makebox
和手動擺弄\widthof
,其中後者由calc
包裹。因此,要將“”放在“程序”一詞下方,您可以執行以下操作:
\documentclass{article}
\usepackage{calc}
\begin{document}
\begin{enumerate}
\item \makebox[\widthof{White\_Space}][l]{Identifier}\quad program
\item White\_Space \quad \makebox[\widthof{program}]{''}
\end{enumerate}
\end{document}
但是,如果這是一個很長的列表,請考慮使用該tabular
環境。