如何使某些文本占用与其他文本相同的空间

如何使某些文本占用与其他文本相同的空间

我希望某些文本占用与其他文本相同的空间。例如,在下面的脚本中,我如何让它们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

看来你需要这个来进行戏剧式的排版。那么其中一个专门的包可能会有用,例如dramatistdramaplay

但如果您只需要放入BOB尺寸为 的盒子MELISSA,您可以这样做:

\newlength{\melis}
\settowidth{\melis}{MELISSA}
\makebox[\melis][l]{BOB}

相关内容