此问题紧接着问题 282721 (\command 行末不带 {} 结尾?)。我的新环境做了三件事:
- 创建同类段落 \quote
- 环聊段落的第一个字符
- 从边缘处开始段落的剩余部分。
我的环境代码似乎有点重(货物崇拜!)。 有没有可能变得更容易一些?
我的 MWE :
\documentclass[]{memoir}%The class i need to use is derived from memoir
\def\changemargin#1#2{\list{}{\rightmargin#2\leftmargin#1\setlength{\parindent}{-1.0cm}}\item[]}
\let\endchangemargin=\endlist
% question 588, Vivi answer : https://tex.stackexchange.com/questions/588/how-can-i-change-the-margins-for-only-part-of-the-text/600#600
\usepackage{tabto}%« "Tab" to a measured position in the line »
\newenvironment{dialogue}{%
\begin{changemargin}{2.0cm}{2.0cm}%environment like \quote
\par\setlength{\parindent}{-1.0cm}%for hangout par
\leavevmode%if not, the first line is not hang
\TabPositions{0.0cm}%to begin the text at margin
\newcommand\one{\par\normalfont M : \tab}%
\newcommand\two{\par\normalfont P : \tab\normalfont\itshape}%
\newcommand\NormalText{\par\normalfont\tab}%
}{\par\end{changemargin}}
\usepackage{lipsum}
\begin{document}
\lipsum[4]%
\begin{dialogue}%
\two \lipsum[4]
\two \lipsum[4]
\one \lipsum[4]
\one \lipsum[4]
\NormalText \lipsum[4]
\two \lipsum[4]
\end{dialogue}
\lipsum[4]%
\end{document}
答案1
这是一个解决方案
\documentclass[]{memoir}
\newenvironment{dialogue}{%
\newcommand\one{\normalfont\item[M:]}%
\newcommand\two{\normalfont\item[P:]\itshape}%
\newcommand\NormalText{\item[]\normalfont}%
\list{}{\rightmargin2cm\leftmargin2cm\labelsep1cm}
}{\endlist}
\usepackage{lipsum}
\begin{document}
\lipsum[4]%
\begin{dialogue}%
\two \lipsum[4]
\two \lipsum[4]
\one \lipsum[4]
\one \lipsum[4]
\NormalText \lipsum[4]
\two \lipsum[4]
\end{dialogue}
\lipsum[4]%
\end{document}
答案2
这算是更简单吗?;-)
\documentclass[]{memoir}
\usepackage{lipsum}
\providecommand{\one}{}
\providecommand{\two}{}
\providecommand{\NormalText}{}
\newenvironment{dialogue}
{%
\renewcommand{\one}{\par\makebox[0pt][r]{\makebox[1cm][l]{\normalfont M :}}\normalfont}%
\renewcommand{\two}{\par\makebox[0pt][r]{\makebox[1cm][l]{\normalfont P :}}\itshape}%
\renewcommand{\NormalText}{\par\normalfont}
\list{}{\leftmargin=2cm \rightmargin=\leftmargin}\item\relax
}
{\endlist}
\begin{document}
\lipsum[2]
\begin{dialogue}
\two \lipsum[2]
\two \lipsum[2]
\one \lipsum[2]
\one \lipsum[2]
\NormalText \lipsum[2]
\two \lipsum[2]
\end{dialogue}
\lipsum[2]
\end{document}
\one
以、\two
或为前缀的段落前的空行\NormalText
是可选的。