如何创建悬挂子弹?

如何创建悬挂子弹?

我怎样才能创造“悬挂子弹”(页边距中的项目符号) 后面跟着文字。我想把它放进去,\newcommand但我没办法做到。我试过这个:

\newcommand{\question}[2]{\\[0.5cm]\hspace{-4.5cm}\bullet\textbf{#1}\\[0.2cm]\hspace{5mm}\text{#2}\\}

答案1

我不太清楚您想要实现什么。我认为您可能想要使用\llap

\leavevmode\llap{$\bullet$ short text }Normal text here

\leavevmode需要 来开始该段落。)

答案2

因为看起来您希望这是一个环境,为什么不使用 enumitem 包呢:


\documentclass{article}
\usepackage{lipsum}
\usepackage{enumitem}
\newlist{question}{itemize}{1}
\setlist[question]{label=\textbullet,labelindent=-.5in,leftmargin=0pt,labelsep=.25in}
\begin{document}
\lipsum[1]
\begin{question}
\item \lipsum[2]
\item another item
\end{question}
\end{document}

答案3

您尝试使用负号将项目符号移入边距,但\hspace此方法无效,因为它会插入粘连。当 TeX 将段落分成几行时,它会丢弃行首的粘连,因此最终会得到以项目\hbox符号字符开头的一行。

我用 替换了你的\hspace{-4.5cm}。这会在段落内\llap{\textbullet}生成一个零宽度。生成的包含,后跟。当 TeX 将段落分成几行时,生成的是\hbox\hbox\hss\textbullet\hbox不是被丢弃,但是被放置在行首。

[的\hss自然宽度为 0,但会缩小 的大小\textbullet(因此\hbox可以保持零宽度)。它会“退格”项目符号的大小,进入左边距。项目符号已设置,将我们带回到行的“开头”(参考点),然后设置文本“问题?”。]

\loggingall
\documentclass{article}

\newcommand{\question}[2]{\\[0.5cm]\hspace{-4.5cm}\textbullet\textbf{#1}\\[0.2cm]\hspace{5mm}\textrm{#2}\\}
\begin{document}
This is a test.
\question{Question?}{Answer.}

This is also a test.
\showlists
\vfil
\pagebreak[4]
\renewcommand{\question}[2]{\\[0.5cm]\llap{\textbullet}\textbf{#1}\\[0.2cm]\textrm{#2}\\}
This is a test.
\question{Question?}{Answer.}

This is also a test.
\showlists
\end{document}

注 1:我在你的宏中将\text其改为。\textrm

注 2:这是我第一次尝试回答,所以很可能我没有用好的 LaTeX 风格解决问题。我以为我可以通过尝试给出答案来学到一些东西。(我做到了!)我希望社区的其他人能够原谅我犯下的任何愚蠢错误。

答案4

这个巧妙的解决方案来自 TexBook。它定义了\marginalbullet可以在段落内任何地方使用的命令。

\documentclass{article}
\usepackage{lipsum}
\parindent=0pt
\parskip=10pt
\def\strutdepth{\dp\strutbox}
\def\specialbullet{\vtop to \strutdepth{
  \baselineskip\strutdepth
  \vss\llap{$\bullet$ }\null}}
\def\marginalbullet{\strut\vadjust{\kern-\strutdepth\specialbullet}}
\begin{document}
Text before \marginalbullet \lipsum[1]\par\lipsum[2]
\end{document}

相关内容