我想简化内容编写方式包含两种类型的段落:
为了叙述部分,悬挂段落样式且首行没有左边距。
为了对话者部分,左右缩进较大且无缩进的段落。
凭借我对 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
除了我之前的两条评论之外:
设置
\parindent 0pt
readtalk
用宏替换
readtalk
环境\xreadtalk
我还实施了第三个改变
- 使
|
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}