不同类型的段落,如何简化?单一环境可行吗?

不同类型的段落,如何简化?单一环境可行吗?

我想简化内容编写方式包含两种类型的段落:

  1. 为了叙述部分,悬挂段落样式且首行没有左边距。

  2. 为了对话者部分,左右缩进较大且无缩进的段落。

凭借我对 LaTex 的了解,我已经取得了一些进步,但遇到了两个困难:

A。我使用了两种不同的环境来解决(1)和(2),但是写文字并不简单因为这种方式会不断迫使我打开和关闭环境。有没有更简单的方法来实现这一点,例如为 (2) 定义一个命令,并使所有内容都位于一个跨块环境中?

b。在环境中,readtalk它仅在只有一个段落时才对我有用。我需要它与多个段落也一样。

代码

% !TeX program = lualatex
\documentclass[ebook,11pt,twoside,openright,showtrims]{memoir}
% -------------------------------------------------------Packages
\usepackage{fontspec}
\usepackage{xcolor}  
\usepackage{csquotes} 


    
\setmainfont{Libertinus Sans}
    
\newfontfamily\notoserif{Noto Serif}        

\newenvironment{readbody}{\everypar{\hangafter=1 \notoserif \small \leftskip-0.5cm\relax \setlength{\hangindent}{4em}}}{\par}

\newenvironment{readtalk}{%
    \par% Start a new paragraph
    %\addvspace{\baselineskip}% Space above
    \notoserif
    \small
    \ignorespaces
    \leftskip0.8cm\relax
    \rightskip0.8cm\relax
    \noindent   
}
{% \end{cr}
    \par% Start a new paragraph
    %\addvspace{\baselineskip}% Space below
    %\noindent
}


\begin{document}

    \mainmatter

\begin{readbody}
    Antes de la fiesta de la Pascua, sabiendo Jesús que había llegado su hora de pasar de este mundo al Padre, habiendo amado a los suyos que estaban en el mundo, los amó hasta el extremo. 
    
    Estaban cenando; ya el diablo había suscitado en el corazón de Judas, hijo de Simón Iscariote, la intención de entregarlo; y Jesús, sabiendo que el Padre había puesto todo en sus manos, que venía de Dios y a Dios volvía, se levanta de la cena, se quita el manto y, tomando una toalla, se la ciñe; luego echa agua en la jofaina y se pone a lavarles los pies a los discípulos, secándoselos con la toalla que se había ceñido. 
    
    Llegó a Simón Pedro y este le dice: 
\end{readbody}  

\begin{readtalk}    
    \textquote{Señor, ¿lavarme los pies tú a mí?}.
\end{readtalk}  

\begin{readbody}
    Jesús le replicó: 
\end{readbody}

\begin{readtalk}    
    \textquote{Lo que yo hago, tú no lo entiendes ahora, pero lo comprenderás más tarde}.
    
    Another paragraph ... It's not working ....
\end{readtalk}  

\begin{readbody}
    Pedro le dice: 
\end{readbody}

\begin{readtalk}    
    \textquote{No me lavarás los pies jamás}.
\end{readtalk}  

\begin{readbody}
    Jesús le contestó: 
\end{readbody}

\begin{readtalk}    
    \textquote{Si no te lavo, no tienes parte conmigo}. 
\end{readtalk}  

\begin{readbody}
    Simón Pedro le dice: 
\end{readbody}

\begin{readtalk}    
    \textquote{Señor, no solo los pies, sino también las manos y la cabeza}.
\end{readtalk}  

\begin{readbody}
    Jesús le dice: 
\end{readbody}

\begin{readtalk}    
    \textquote{Uno que se ha bañado no necesita lavarse más que los pies, porque todo él está limpio. También vosotros estáis limpios, aunque no todos}. 
\end{readtalk}  

\begin{readbody}
    Porque sabía quién lo iba a entregar, por eso dijo: \textquote{No todos estáis limpios}. 
    
    Cuando acabó de lavarles los pies, tomó el manto, se lo puso otra vez y les dijo: 
\end{readbody}

\begin{readtalk}    
    \textquote{¿Comprendéis lo que he hecho con vosotros? Vosotros me llamáis \textquote{el Maestro} y \textquote{el Señor}, y decís bien, porque lo soy. Pues si yo, el Maestro y el Señor, os he lavado los pies, también vosotros debéis lavaros los pies unos a otros: os he dado ejemplo para que lo que yo he hecho con vosotros, vosotros también lo hagáis}.
\end{readtalk}
    
\end{document}

输出

在此处输入图片描述

答案1

您可以减少标记量:

% !TeX program = lualatex
\documentclass[ebook,11pt,twoside,openright,showtrims]{memoir}

\usepackage{fontspec}
\usepackage{xcolor}  
\usepackage{csquotes}
\usepackage{microtype}

\setmainfont{Libertinus Sans}
\newfontfamily\notoserif{Noto Serif}

\newenvironment{scripture}
 {%
  \par
  \notoserif\small
  \parindent=0pt
  \everypar{\hangindent0.8cm\hangafter=1}%
  \let\>\talk
 }
 {\par}
\newcommand{\talk}{\par\hspace*{0.8cm}\ignorespaces}


\begin{document}

\mainmatter

\begin{scripture}
Antes de la fiesta de la Pascua, sabiendo Jesús que había llegado su 
hora de pasar de este mundo al Padre, habiendo amado a los suyos que 
estaban en el mundo, los amó hasta el extremo. 

Estaban cenando; ya el diablo había suscitado en el corazón de Judas, 
hijo de Simón Iscariote, la intención de entregarlo; y Jesús, sabiendo 
que el Padre había puesto todo en sus manos, que venía de Dios y a Dios 
volvía, se levanta de la cena, se quita el manto y, tomando una toalla, 
se la ciñe; luego echa agua en la jofaina y se pone a lavarles los pies 
a los discípulos, secándoselos con la toalla que se había ceñido. 

Llegó a Simón Pedro y este le dice: 

\> \textquote{Señor, ¿lavarme los pies tú a mí?}

Jesús le replicó: 

\> \textquote{Lo que yo hago, tú no lo entiendes ahora, pero lo comprenderás más tarde}

\> Another paragraph ... It's not working ....

Pedro le dice: 

\> \textquote{No me lavarás los pies jamás}.

Jesús le contestó: 

\> \textquote{Si no te lavo, no tienes parte conmigo}. 

Simón Pedro le dice: 

\> \textquote{Señor, no solo los pies, sino también las manos y la cabeza}.

Jesús le dice: 

\> \textquote{Uno que se ha bañado no necesita lavarse más que los pies, porque 
todo él está limpio. También vosotros estáis limpios, aunque no todos}. 

Porque sabía quién lo iba a entregar, por eso dijo: \textquote{No todos 
estáis limpios}. 

Cuando acabó de lavarles los pies, tomó el manto, se lo puso otra vez y 
les dijo: 

\> \textquote{¿Comprendéis lo que he hecho con vosotros? Vosotros me llamáis 
\textquote{el Maestro} y \textquote{el Señor}, y decís bien, porque lo soy. 
Pues si yo, el Maestro y el Señor, os he lavado los pies, también vosotros 
debéis lavaros los pies unos a otros: os he dado ejemplo para que lo que 
yo he hecho con vosotros, vosotros también lo hagáis}.
\end{scripture}

\end{document}

为了避免人们可能用一个论点来\textquote定义\talk

\newcommand{\talk}[1]{\par\hspace*{0.8cm}\textquote{#1}}

并调用

\>{Si no te lavo, no tienes parte conmigo}. 

在此处输入图片描述

如果您的缩进行(两侧)包含引号中的口头文本(我多么不喜欢结束引号后的句号),您可以这样做:

% !TeX program = lualatex
\documentclass[ebook,11pt,twoside,openright,showtrims]{memoir}

\usepackage{fontspec}
\usepackage{xcolor}  
\usepackage{csquotes}
\usepackage{microtype}

\setmainfont{Libertinus Sans}
\newfontfamily\notoserif{Noto Serif}

\newenvironment{scripture}
 {%
  \par
  \notoserif\small
  \parindent=0pt
  \everypar{\hangindent0.8cm\hangafter=1}%
  \let\>\talk
 }
 {\par}
\newcommand{\talk}[2]{%
  \par
  {% start a group
   \rightskip=0.8cm
   \hspace*{0.8cm}%
   \textquote{#1}%
   \ifx.#2.\par\else#2\fi
  }% end the group
}


\begin{document}

\mainmatter

\begin{scripture}
Antes de la fiesta de la Pascua, sabiendo Jesús que había llegado su 
hora de pasar de este mundo al Padre, habiendo amado a los suyos que 
estaban en el mundo, los amó hasta el extremo. 

Estaban cenando; ya el diablo había suscitado en el corazón de Judas, 
hijo de Simón Iscariote, la intención de entregarlo; y Jesús, sabiendo 
que el Padre había puesto todo en sus manos, que venía de Dios y a Dios 
volvía, se levanta de la cena, se quita el manto y, tomando una toalla, 
se la ciñe; luego echa agua en la jofaina y se pone a lavarles los pies 
a los discípulos, secándoselos con la toalla que se había ceñido. 

Llegó a Simón Pedro y este le dice: 

\>{Señor, ¿lavarme los pies tú a mí?}

Jesús le replicó: 

\>{Lo que yo hago, tú no lo entiendes ahora, pero lo comprenderás más tarde}.

\>{Another paragraph}.

Pedro le dice: 

\>{No me lavarás los pies jamás}.

Jesús le contestó: 

\>{Si no te lavo, no tienes parte conmigo}. 

Simón Pedro le dice: 

\>{Señor, no solo los pies, sino también las manos y la cabeza}.

Jesús le dice: 

\>{Uno que se ha bañado no necesita lavarse más que los pies, porque 
todo él está limpio. También vosotros estáis limpios, aunque no todos}. 

Porque sabía quién lo iba a entregar, por eso dijo: \textquote{No todos 
estáis limpios}. 

Cuando acabó de lavarles los pies, tomó el manto, se lo puso otra vez y 
les dijo: 

\>{¿Comprendéis lo que he hecho con vosotros? Vosotros me llamáis 
\textquote{el Maestro} y \textquote{el Señor}, y decís bien, porque lo soy. 
Pues si yo, el Maestro y el Señor, os he lavado los pies, también vosotros 
debéis lavaros los pies unos a otros: os he dado ejemplo para que lo que 
yo he hecho con vosotros, vosotros también lo hagáis}.
\end{scripture}

\end{document}

在此处输入图片描述

答案2

除了我之前的两条评论之外:

  1. 设置\parindent 0ptreadtalk

  2. 用宏替换readtalk环境\xreadtalk

我还实施了第三个改变

  1. 使|active 作为分隔符来指示\xreadtalk。从而|blah blah|设置blah blah样式\xreadtalk

正如我所设置的,它|...|只能在readbody环境内部有效地使用,因为它会关闭现有的readbody环境,执行其操作,然后重新打开它。

readbody因此,完整的段落只需要一个环境,并且在该环境内,|...|可以出现多个分隔的“readtalks”。

这是 MWE

% !TeX program = lualatex
\documentclass[ebook,11pt,twoside,openright,showtrims]{memoir}
% -------------------------------------------------------Packages
\usepackage{fontspec}
\usepackage{xcolor}  
\usepackage{csquotes} 


    
\setmainfont{Arial-Bold}%{Libertinus Sans}
    
\newfontfamily\notoserif{Arial}%{Noto Serif}        

\newenvironment{readbody}{\everypar{\hangafter=1 \notoserif \small \leftskip-0.5cm\relax \setlength{\hangindent}{4em}}}{\par}

\newcommand\xreadtalk[1]{\begingroup
    \par
    \notoserif
    \small
    \ignorespaces
    \leftskip0.8cm\relax
    \rightskip0.8cm\relax
    \parindent 0pt\relax
    #1\par\endgroup}   

\catcode`|=\active
\long\def|#1|{\end{readbody}\xreadtalk{#1}\begin{readbody}}

\begin{document}

    \mainmatter

\begin{readbody}
    Antes de la fiesta de la Pascua, sabiendo Jesús que había llegado su hora de pasar de este mundo al Padre, habiendo amado a los suyos que estaban en el mundo, los amó hasta el extremo. 
    
    Estaban cenando; ya el diablo había suscitado en el corazón de Judas, hijo de Simón Iscariote, la intención de entregarlo; y Jesús, sabiendo que el Padre había puesto todo en sus manos, que venía de Dios y a Dios volvía, se levanta de la cena, se quita el manto y, tomando una toalla, se la ciñe; luego echa agua en la jofaina y se pone a lavarles los pies a los discípulos, secándoselos con la toalla que se había ceñido. 
    
    Llegó a Simón Pedro y este le dice: 

|\textquote{Señor, ¿lavarme los pies tú a mí?}.|

    Jesús le replicó: 

|\textquote{Lo que yo hago, tú no lo entiendes ahora, pero lo comprenderás más tarde}.
    
    Another paragraph ... It's not working ....
 fgkdfgldf kldfgkj fdklj dfjgklkjfd fdgklkfdg kdflkfdg lkfdg klfdg|

    Pedro le dice: 

|\textquote{No me lavarás los pies jamás}.|  

    Jesús le contestó: 

|\textquote{Si no te lavo, no tienes parte conmigo}.|  

    Simón Pedro le dice: 

|\textquote{Señor, no solo los pies, sino también las manos y la cabeza}.|  

    Jesús le dice: 

|\textquote{Uno que se ha bañado no necesita lavarse más que los pies, porque todo él está limpio. También vosotros estáis limpios, aunque no todos}.|  

    Porque sabía quién lo iba a entregar, por eso dijo: \textquote{No todos estáis limpios}. 
    
    Cuando acabó de lavarles los pies, tomó el manto, se lo puso otra vez y les dijo: 

|\textquote{¿Comprendéis lo que he hecho con vosotros? Vosotros me llamáis \textquote{el Maestro} y \textquote{el Señor}, y decís bien, porque lo soy. Pues si yo, el Maestro y el Señor, os he lavado los pies, también vosotros debéis lavaros los pies unos a otros: os he dado ejemplo para que lo que yo he hecho con vosotros, vosotros también lo hagáis}.|

\end{readbody}
   
\end{document}

在此处输入图片描述

相关内容