由于这里无法详述的原因,我需要能够创建看起来像列表项的东西,而无需使用列表。具体来说,我希望每个项目都以一个标记(即一个三角形左,但这并不重要)开头,并且如果文本换行,则要像列表项一样换行和缩进。[编辑:我实际上需要这些替代项目是独立的 - 也就是说,不在任何需要开始标记和结束标记的封闭结构(如表格)内]。
通过阅读其他笔记,我了解到我可以使用 minipage 来缩进文本。有没有更简单的方法,无需加载其他包?谢谢。
[编辑:似乎有人怀疑这是否真的是我所需要的。要求更详细地列出这里。底线:我必须将文本放入另一个 .tex 文件中,该文件在处理时将创建一个 tex 文件,我可以使用一组不同的宏来处理该文件以创建我的输出。因此,单个 tex 文件最终会产生两个 PDF:一个由文件本身生成,另一个由我生成的 tex 文件生成。问题是,虽然理论上我可以使用列表结构来保存我正在编写的解决方案,但这需要一组相当复杂的布尔标志来将列表结束代码放在正确的位置,而这一切都非常脆弱。所以我更喜欢每个解决方案都独立的解决方案。]
答案1
这可能就是你想要的,在@ChristianR 和
将 itemize 从项目符号更改为正方形
\documentclass{article}
\newenvironment{notalistitem}
{\begin{itemize}
\renewcommand{\labelitemi}{$\triangleright$}
\item}
{\end{itemize}}
\begin{document}
Some text
\begin{notalistitem}
Here is text that should look like a list item although it doesn't
seem to be part of a list.
\end{notalistitem}
\begin{itemize}
\item This is part of a list.
\end{itemize}
\end{document}
编辑:如果您想itemize
在这个新环境中使用,或者在中使用其中一个itemize
,那么您将需要更强大的东西。
答案2
如果在列表环境中则此方法无效\xitem
,但仅在“外层”有效:
\documentclass{article}
\usepackage{lipsum} % for the mock text
\newcommand{\xitem}{%
\par\hangindent3em\hangafter0
\noindent\llap{$\triangleright$\enspace}%
\ignorespaces}
\begin{document}
\lipsum[1]
\xitem\lipsum[2]
\lipsum[3]
\end{document}
为了使符号与左边距齐平,您可以这样做
\newcommand{\xitem}{%
\par\hangindent3em\hangafter1
\noindent\makebox[3em][l]{$\triangleright$}%
\ignorespaces}
悬挂缩进从一行之后开始,但第一行的开头被一个与缩进宽度相同的框占据。
答案3
那类似的东西
\documentclass{article}
\usepackage{lipsum}
\begin{document}
\def\myitem{\hangindent=5em$\triangleright$}
\myitem \lipsum[1]
\myitem \lipsum[2]
\myitem \lipsum[3]
\lipsum[4]
\end{document}
使用的优点\hangindent
是它具有单个段落范围,因此在需要“结束”的项目之后不会产生任何影响。缺点是如果您的“项目”长度超过 1 个段落,它就会失效。
答案4
我不会讨论是否有更好的替代方案,但你总是可以使用语言内置的 TeX 功能来实现这种功能,即\parshape
。这是一个简单的宏,它使用你想要的任何符号来生成带有悬挂缩进的段落:
\def\ipar#1{\par\medskip
\@tempdima=\textwidth \advance\@tempdima by -1.5em
\parshape=2 0pt \textwidth 1.5em \@tempdima\relax
\noindent\hbox to 1.5em {#1}}
您可以像这样使用它(或定义另一个宏来提供三角形):
\ipar{$\bullet$\hfil} Here comes the paragraph text.
解释:\parshape
与多对一起使用(<indentation>, <line length>)
。最后一对用于所有剩余行。语法为
\parshape <number-of-pairs> (pair 1) (pair 2) ...
通过明智的选择,您可以构建圆形段落等。宏的其余部分根据所需的缩进(硬编码为 1.5em)计算行长。