我正在打印一首歌曲。这首歌(有几个小节)有一个合唱小节应该进一步缩进和斜体化。
我正在使用verse
环境(而不是包),想知道实现此目的的最佳方法。目前,我只是将\hspace
合唱节中的每一行都用斜体包装起来。
我知道我可以使用 verse 包,但这似乎有点小题大做;我想知道我是否可以在 verse 环境中缩进一个块,正如 MWE 中的评论所建议的那样。
我想了解 Tex 的逻辑:嵌套环境(例如诗歌中的合唱节)在设置缩进时如何竞争。
MWE 是
\documentclass[11pt,oneside]{article}
\begin{document}
\section*{Song Title}
\begin{verse}
1. word word word word word \\
word word word word word \\
word word word word word \\
word word word word word \\
\medskip
{\itshape %I want to add a \addtoindent command here!!
Chorus: \\
\hspace{1em} chorus chorus chorus chorus \\
\hspace{1em} chorus chorus chorus chorus \\
\hspace{1em} chorus chorus chorus chorus \\
\hspace{1em} chorus chorus chorus chorus }
\medskip
2. word word word word word \\
word word word word word \\
word word word word word \\
word word word word word \\
\end{verse}
\end{document}
答案1
我引入了chorusverse
环境,通过添加缩进来控制\chorusindent
。环境自动变为斜体并打印一行“合唱:”
\documentclass[11pt,oneside]{article}
\usepackage{xpatch}
\def\chorusindent{1em}
\let\origverse\verse
\xpatchcmd\verse{\leftmargin 1.5em}{\leftmargin\chorusindent}{}{}
\xpatchcmd\verse{\itemindent -1.5em}{\itemindent\dimexpr-1.5em-\labelwidth-\labelsep}{}{}
\xpatchcmd\verse{\relax}{\relax\itshape Chorus:\\}{}{}
\let\chorusverse\verse
\let\endchorusverse\endverse
\let\verse\origverse
\begin{document}
\section*{Song Title}
\begin{verse}
1. word word word word word \\
word word word word word \\
word word word word word \\
word word word word word \\
\begin{chorusverse}
chorus chorus chorus chorus \\
chorus chorus chorus chorus \\
chorus chorus chorus chorus \\
chorus chorus chorus chorus
\end{chorusverse}
2. word word word word word \\
word word word word word \\
word word word word word \\
word word word word word \\
\end{verse}
\end{document}
答案2
除了其他解决方案之外,您还可以使用 verse 包和 gmverse。
这种组合的优点是
- 自动将诗歌视觉居中
- 如果 gmverse 是第二个加载的,那么您也可以输入不带 // 的行。如果您从文本源复制和粘贴,这将使文档创建速度更快。
verse 包中还有一个命令 \flagverse{},它将悬挂在段落描述左侧,例如 \flagverse{\itshape Chorus:} 将按照您的要求提供合唱标签。
答案3
这可能有点过头了,但 poetryscol 中的 indentedverse 环境正好满足了你的需要。如果你愿意,你可以创建不同缩进的行块层次结构。