我希望某些文本占用与其他文本相同的空间。例如,在下面的脚本中,我如何让它们BOB
占用相同的空间,以便MELISSA
它们的对话行开头对齐?
\documentclass{article}
\begin{document}
BOB Hello, Melissa.
MELISSA Hello, Bob.
\end{document}
答案1
一些风格:
\documentclass{article}
\newlength{\blob}
\settowidth{\blob}{MELISSA}
\begin{document}
\makebox[\blob][l]{BOB} Hello, Melissa.
\makebox[\blob][l]{MELISSA} Hello, Bob.
\end{document}
如果对话框少于一行,则可行。如果对话框可能更长,您可以尝试使用悬挂段落:
\documentclass{article}
\usepackage{hanging}
\newlength{\blob}
\settowidth{\blob}{MELISSA } %% longest with space
\newcommand{\start}[1]{%
\parindent0pt
\everypar={\hangpara{\blob}{0}}
\makebox[0pt][r]{\makebox[\blob][l]{#1}}%
\ignorespaces
}
\newcommand{\dstop}{%
\parindent0pt
\everypar={}
}
\begin{document}
\start{BOB} Hello, Melissa.
\start{MELISSA} Hello, Bob. Speaking Speaking Speaking Speaking
Speaking Speaking Speaking Speaking Speaking Speaking Speaking
Speaking
And more speaking speaking speaking...
\dstop
Normal paragraph here
\end{document}
这使:
您可以轻松修改\start
宏\dstop
来更改字体、添加跳过等,从而使对话框更易于阅读。
答案2
看来你需要这个来进行戏剧式的排版。那么其中一个专门的包可能会有用,例如dramatist
,drama
或play
。
但如果您只需要放入BOB
尺寸为 的盒子MELISSA
,您可以这样做:
\newlength{\melis}
\settowidth{\melis}{MELISSA}
\makebox[\melis][l]{BOB}