在新环境中环聊段落的第一行

在新环境中环聊段落的第一行

此问题紧接着问题 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 mea­sured po­si­tion 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是可选的。

在此处输入图片描述

相关内容