我怎样才能创造“悬挂子弹”(页边距中的项目符号) 后面跟着文字。我想把它放进去,\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}