这是一个相关问题:
虽然这个答案效果很好,但它确实创建了一个Verse
没有包固有功能的新环境verse
。对于 LyX 来说,实现起来会很麻烦。
我想知道,是否有一种方法可以在序言中定义字体样式(字体大小、行距、样式等),同时保留所有固有属性verse
?这样可以保持 LyX 界面整洁,并且仍然可以通过序言进行修改。
ps. 我尝试了\renewenvironment
简单的\selectfont
,它似乎具有erase
诗歌功能。
答案1
与 Werner 的解决方案不同,此解决方案不重写整个环境。以下是前言:
\newcommand{\versefont}{\itshape} % put here whatever font commands you want
\let\myoldverse\verse % now we store the original {verse}
\def\verse{\versefont\myoldverse} % and new {verse} just uses the font and original {verse}
答案2
如果您使用标准文档类之一,则只需将以下内容添加到 LaTeX 前言中:
\makeatletter
\newcommand{\versefont}{}
\renewenvironment{verse}
{\let\\\@centercr
\list{}{\itemsep \z@
\itemindent -1.5em%
\listparindent\itemindent
\rightmargin \leftmargin
\advance\leftmargin 1.5em}%
\item\relax\versefont}
{\endlist}
\makeatother
这将允许您重新定义\versefont
在序言中或通过正文使用 ERT 进行字体选择。
如果你使用verse
包裹,那么你的序言应该如下所示,以便实现相同的效果:
\usepackage{verse}
\makeatletter
\newcommand{\versefont}{}
\renewenvironment{verse}[1][\linewidth]{
\stepcounter{verse@envctr}%
\setcounter{poemline}{0}\refstepcounter{poemline}%
\setcounter{vslineno}{1}%
\let\\=\@vscentercr
\list{}{\itemsep \z@
\itemindent -\vindent%
\listparindent\itemindent
\parsep \stanzaskip
\ifdim #1 < \linewidth
\rightmargin \z@
\setlength{\leftmargin}{\linewidth}%
\addtolength{\leftmargin}{-#1}%
\addtolength{\leftmargin}{-0.5\leftmargin}%
\else
\rightmargin \leftmargin
\fi
\addtolength{\leftmargin}{\vindent}%
\versefont}
\item[]}{\endlist}
\makeatother
上面的代码只是verse
从中获取了环境定义verse.dtx
并插入\versefont
(定义为空)。