我正在研究如何定制其他软件包提供的环境,而不必在我的文档序言中完全重新定义环境。
具体来说,该verse
包定义其环境如下,我只想使所有行变为斜体(使用简单的\itshape
),而不必每次都输入它,\begin{verse}\itshape ... \end{verse}
因为我经常使用它,并且我想将它一次性集成到我的文档的环境中。
106 \renewenvironment{verse}[1][\linewidth]{%
107 \stepcounter{verse@envctr}%
108 \setcounter{poemline}{0}\refstepcounter{poemline}%
109 \setcounter{vslineno}{1}%
110 \let\\=\@vscentercr
111 \list{}{\itemsep \z@
112 \itemindent -\vindent%
113 \listparindent\itemindent
114 \parsep \stanzaskip
115 \ifdim #1 < \linewidth
116 \rightmargin \z@
117 \setlength{\leftmargin}{\linewidth}%
118 \addtolength{\leftmargin}{-#1}%
119 \addtolength{\leftmargin}{-0.5\leftmargin}%
120 \else
121 \rightmargin \leftmargin
122 \fi
123 \addtolength{\leftmargin}{\vindent}}%
124 \item[]%
125 }
126 {\endlist}
答案1
etoolbox
正如 Hafid 在评论中所建议的,我选择了实现该命令的包提供的工具\AtBeginEnvironment{ env }{ what to append }
因此我在我的代码中实现了:
\AtBeginEnvironment{verse}{\itshape}
答案2
您可以使用\let
命令来实现这个技巧。请注意,\newenvironment{verse}{}{}
已经创建了命令\verse
和\endverse
。
\documentclass[a4paper]{article}
\usepackage{lipsum}
\let\myverse\verse % store the definition of \verse in \myverse
\renewcommand{\verse}{\myverse\itshape} % renew the definition of \verse to previous difinition plus \itshape
\begin{document}
\begin{verse}
\lipsum
\end{verse}
\end{document}