我是 LaTeX 新手,喜欢更改description
整个文档中的环境参数。至少,我喜欢有两个参数:项目文本的颜色和文本背景颜色作为描述。
换句话说,我想赋予风格。
答案1
不幸的是,您无法像使用 CSS 和 HTML 那样轻松地更改环境样式。但是,您可以重新定义description
或定义自己的变体来添加颜色命令。
要设置背景颜色,您可以使用我的adjustbox
包裹:
\documentclass{article}
\usepackage{xcolor}
\usepackage{adjustbox}
\newenvironment{cdescription}{%
\begin{adjustbox}{minipage=\linewidth,bgcolor=blue,vspace=\smallskipamount}
\begin{description}
\color{red}%
}{%
\end{description}
\end{adjustbox}
}
\begin{document}
Text before
\begin{cdescription}
\item[Hello] World
\item[Example] Item
\end{cdescription}
text after
\end{document}
如果您想重新定义description
,您可以保存旧的定义并在内部使用它。
\let\olddescription\description
\let\endolddescription\enddescription
\renewenvironment{description}{%
\begin{adjustbox}{minipage=\linewidth,bgcolor=blue,vspace=\smallskipamount}
\begin{olddescription}
\color{red}%
}{%
\end{olddescription}
\end{adjustbox}
}
如果要为每个环境设置颜色,只需[2]
在环境名称后添加(例如),并在定义中用和\newenvironment{cdescription}[2]{%
替换颜色名称。#1
#2
答案2
环境description
本身没有颜色选项;但是,您可以使用标准构造来获取颜色。例如,如果您只想要您提到的两件事,您可以使用包xcolor
和以下命令:
\documentclass{article}
\usepackage{xcolor}
\begin{document}
\noindent
\colorbox{blue}{%
\begin{minipage}{\textwidth}%
\begin{description}
\color{red}
\item[First] Some text
\item[Second] Some more text
\end{description}%
\end{minipage}%
}
\end{document}
这有几个部分:
获取背景颜色只是对于
description
本身,我把它放在了 中\colorbox
。但是像这样的段落构造环境
description
必须处于类似页面的设置中,而事实\colorbox
并非如此,因此我进一步将其嵌入到minipage
宽度与文本相同的环境中。为了获取文本颜色,我
\color{red}
只在 内部发出description
。每个环境都是一个组,并屏蔽外部对其内容所做的更改,因此颜色不会延续到描述本身之外。
你说你还想对整个文档中的每个 进行这些更改description
。为此,你可以定义一个封装以下内容的命令:
% #2 is background color, #3 is text color
% Optional #1 is width
% #4 is the contents of the description
\newcommand\colordesc[4][\textwidth]{%
\noindent
\colorbox{#2}{%
\begin{minipage}{#1}%
\begin{description}
\color{#3}
#4
\end{description}%
\end{minipage}%
}%
}
% Use like:
\colordesc[5in]{blue}{red}{
\item[First] some text
\item[Second] some more text
}
(我将其设为命令而不是环境,因为将括号拆分到\colorbox
环境的两端很麻烦。)
答案3
目前,所有提供的答案都不能跨页。有些软件包也可以处理分页符。最常见的是
一个简单的背景可以用 来实现framed
。如果你想绘制一个更强大的全帧,你可以使用mdframed
或tcolorbox
。我建议提供一个新环境,而不是重新定义所有描述环境。如果你重新定义所有描述环境,以下解决方案就不太适用了。
为了设置新的描述环境,我正在使用该包enumitem
。
framed
包framed
定义了环境shaded
。要使用环境,您必须声明第shadecolor
一个:
\documentclass{article}
\usepackage{enumitem}
\usepackage{xcolor}
\usepackage{framed}
\newlist{cdescription}{description}{1}
\definecolor{shadecolor}{gray}{0.95}%color of the background
\setlist[cdescription,1]{before=\begin{shaded},after=\end{shaded}}
\usepackage{lipsum}
\begin{document}
\begin{cdescription}
\item[first lipsum] \lipsum[1]
\item[second lipsum] \lipsum[2]
\item[third lipsum] \lipsum[3]
\item[fourth lipsum] \lipsum[4]
\item[fifth lipsum] \lipsum[5]
\end{cdescription}
\end{document}
mdframed
该包mdframed
提供了自己的命令来包围任何环境。这是通过以下方式完成的\surroundwithmdframed
:
\documentclass{article}
\usepackage{enumitem}
\usepackage{xcolor}
\usepackage[framemethod=TikZ]{mdframed}
\newlist{cdescription}{description}{1}
\mdfdefinestyle{cdescription}{%
hidealllines=true,%no lines drawn
backgroundcolor=gray!15,
skipabove=\topskip,
skipbelow=\topskip,
roundcorner=15pt,
}
\surroundwithmdframed[style=cdescription]{cdescription}
\usepackage{lipsum}
\begin{document}
\begin{cdescription}
\item[first lipsum] \lipsum[1]
\item[second lipsum] \lipsum[2]
\item[third lipsum] \lipsum[3]
\item[fourth lipsum] \lipsum[4]
\item[fifth lipsum] \lipsum[5]
\end{cdescription}
\end{document}
tcolorbox
\documentclass{article}
\usepackage{enumitem}
\usepackage{xcolor}
\usepackage[]{tcolorbox}
\tcbuselibrary{breakable}
\newlist{cdescription}{description}{1}
\setlist[cdescription,1]{before={\begin{tcolorbox}[breakable,boxrule=0pt]},after=\end{tcolorbox}}
\usepackage{lipsum}
\begin{document}
\begin{cdescription}
\item[first lipsum] \lipsum[1]
\item[second lipsum] \lipsum[2]
\item[third lipsum] \lipsum[3]
\item[fourth lipsum] \lipsum[4]
\item[fifth lipsum] \lipsum[5]
\end{cdescription}
\end{document}