在一个图书项目中,我使用\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>
在页面居中排版。