我正在排版一本小说,其中许多角色都有 2 段以上不间断的对话。
例子:
“Lorem ipsum dolor sit amet...tik。
“Nullam orci dolor,porttitor a…朱洛?
“Nulla nibh nisl,fermentum id orci pulvinar,cursus varius eros。”
到目前为止,我一直将这段文字排版如下:
``Lorem ipsum dolor sit amet\dots tik.
``Nullam orci dolor, porttitor a\dots \emph{julo?}
``Nulla nibh nisl, fermentum id orci pulvinar, cursus varius eros.''
但我想知道是否可以使用 csquote 包或类似包来设置上述格式,例如:
\begin{SPEACH}
Lorem ipsum dolor sit amet\dots tik. \par
Nullam orci dolor, porttitor a\dots \emph{julo?} \par
Nulla nibh nisl, fermentum id orci pulvinar, cursus varius eros.
\end{SPEACH}
我问这个问题的主要原因是因为我使用 Sublime Text 2 排版小说,以 开头``
但不结束的段落''
会弄乱语法突出显示。
答案1
此解决方案只是用 声明一个引用样式csquotes
,然后创建\speech{}
使用该样式的命令。组是限制样式效果所必需的everypar
。everypar
样式基于 中的架构csquotes.cfg
。
\documentclass{article}
\usepackage{csquotes}
\DeclareQuoteStyle{everypar}% based on csquotes.cfg
{\textquotedblleft}
[\textquotedblleft]
{\textquotedblright}
{\textquoteleft}
[\textquoteleft]
{\textquoteright}
\newcommand\speech[1]{%
\begingroup\setquotestyle{everypar}%
\enquote{#1}\endgroup}
\begin{document}
\speech{%
Lorem ipsum dolor sit amet\dots tik. \par
Nullam orci dolor, porttitor a\dots \emph{julo?} \par
Nulla nibh nisl, fermentum id orci pulvinar, cursus varius eros.%
}
\end{document}
答案2
通过这个答案,我将左边的引号重叠到段落的开头,但\def\andIquote{``}
如果您想要传统的引号设置,您可以重新定义。
同样,我没有留出额外的垂直空间,但可以添加,例如,\medskip
在环境定义的开始和结束处添加。
\documentclass{article}
\usepackage{lipsum}
\def\andIquote{\makebox[0pt][r]{``}}
\let\svpar\par
\newenvironment{speech}
{\def\par{\svpar\andIquote}\andIquote\ignorespaces}{\unskip''\svpar}
\begin{document}
\lipsum[1]
\begin{speech}
Lorem ipsum dolor sit amet\dots tik. \par
Nullam orci dolor, porttitor a\dots \emph{julo?} \par
Nulla nibh nisl, fermentum id orci pulvinar, cursus varius eros.
\end{speech}
\lipsum[2]
\end{document}