在 \centering 环境中垂直对齐每行的首字母

在 \centering 环境中垂直对齐每行的首字母

在一个图书项目中,我使用\centering将诗句放在页面中央。正如预期的那样,文本的布局使得诗句的每一行都居中。我想保留第 1 行的居中,同时强制第 2 行的第一个字符与诗句第 1 行的第一个字符垂直对齐。我的 MWE 如下:

\documentclass{book}
\usepackage{fontspec}

\newenvironment{myverse}
{\nopagebreak\centering}

\begin{document}
% Will replace period with unicode । and ॥ later
\begin{myverse}
dharmakṣetre kurukṣetre samavetā yuyutsavaḥ .\\ 
māmakāḥ pāṇḍavāścaiva kimakurvata sañjaya . 1-1.\\
\end{myverse}

\end{document}

输出

在输出中,我希望第 2 行的第一个字母(即,第 1 行的第一个字母)m直接放在下面。d

这可能吗?如果\centering不是最佳环境,可以做些什么来获得所需的布局?

答案1

这是水平的对齐,而不是垂直。

您希望将文本块左对齐,同时将整个块居中,因此这里我使用l居中表格中的一列。

在此处输入图片描述

\documentclass{book}
\usepackage{fontspec}

\newenvironment{myverse}
{\begin{center}\begin{tabular}{l}}
{\end{tabular}\end{center}}

\begin{document}
% Will replace period with unicode । and ॥ later
\begin{myverse}
dharmakṣetre kurukṣetre samavetā yuyutsavaḥ .\\ 
māmakāḥ pāṇḍavāścaiva kimakurvata sañjaya . 1-1.\\
\end{myverse}

\end{document}

答案2

尝试一下这个verse包,它能让你控制排版诗句的方方面面。这是你的 MWE 的修订版,谢谢你。

% verseprob.tex  SE 577265
\documentclass{book}
\usepackage{fontspec}
\usepackage{comment}
\usepackage{verse}
\usepackage{lipsum}
\newlength{\mylength}  % just as a convenience

\newenvironment{myverse}
{\nopagebreak\centering}

\begin{document}
\begin{comment}
% Will replace period with unicode । and ॥ later
\begin{myverse}
dharmakṣetre kurukṣetre samavetā yuyutsavaḥ .\\ 
māmakāḥ pāṇḍavāścaiva kimakurvata sañjaya . 1-1.\\
\end{myverse}
\end{comment}

\lipsum[1]

% the length of a typical line
\settowidth{\mylength}{dharmakṣetre kurukṣetre samavetā yuyutsavaḥ .}

\begin{verse}[\mylength]
dharmakṣetre kurukṣetre samavetā yuyutsavaḥ .\\ 
māmakāḥ pāṇḍavāścaiva kimakurvata sañjaya . 1-1.\\
\end{verse}

\lipsum[2]
\end{document}

使用 verse 包为 提供可选的长度参数\begin{verse}[<length>],其中<length>是诗行的平均长度,然后诗行将以 的中点<length>在页面居中排版。

在此处输入图片描述

相关内容