我为自己定义了一个新的环境,如下所示:
\newenvironment{myquote}{\list{}{\leftmargin=0.3in\rightmargin=0.3in}\item[]}{\endlist}
我在这里想要做的是通过添加边框来格式化它。所有边框都需要是实心的,但左边框需要更粗。
有什么办法呢?
答案1
这里有一个使用 mdframed 的解决方案。您有两个新键:addleftlinewidth
并addleftlinecolor
修改附加设置:
\documentclass{article}
\usepackage{showframe}
\usepackage[framemethod=default]{mdframed}
\makeatletter
\mdf@do@lengthoption{addleftlinewidth==\z@}
\newcommand*\mdf@addleftlinecolor{\mdf@linecolor}
\define@key{mdf}{addleftlinecolor}[\mdf@linecolor]{%
\def\mdf@addleftlinecolor{#1}%
}
\mdfsetup{settings={\addtolength{\mdf@leftmargin@length}{\mdf@addleftlinewidth@length}}}
\preto\md@frame@leftline@single{%
\llap{\color{\mdf@addleftlinecolor}%{\mdf@middlelinecolor}%
\rule[-\dp\@tempboxa-\mdf@innerbottommargin@length%
\ifbool{mdf@bottomline}{-\mdf@middlelinewidth@length}{}]%
{\mdf@addleftlinewidth@length}{\mdfboundingboxheight%
+\ifbool{mdf@bottomline}{\mdf@middlelinewidth@length}{0pt}
+\ifbool{mdf@topline}{\mdf@middlelinewidth@length}{0pt}}%
\hspace*{\mdf@middlelinewidth@length}}%
}%
\makeatother
\mdfdefinestyle{cssstyle}{linecolor=blue,linewidth=2pt,%
addleftlinewidth=6pt,addleftlinecolor=red,
skipbelow=\topskip,skipabove=\topskip}
\newmdenv[style=cssstyle]{myquote}
\usepackage{lipsum}
\begin{document}
\begin{myquote}[addleftlinewidth=6pt]
\lipsum[2]
\end{myquote}
Text
\begin{myquote}[addleftlinewidth=4pt,addleftlinecolor=yellow]
\lipsum[3]
\end{myquote}
\end{document}
目前仅支持单帧。
答案2
您可以使用adjustbox
包装在其周围添加一个框架,然后剪掉框架的某些侧面以使其变薄。
我删除了引文,用居中的小页面代替,因为这样处理起来更简单adjustbox
。但是,它不能跨页面拆分。
没有直接的 CSS 方式来定义框架或边框。一些键adjustbox
允许 1、2 或 4 个参数,就像一些 CSS 设置一样(有关详细信息,请参阅手册),但仅此而已。在 LaTeX 中,您基本上总是必须将相关内容框起来,然后根据其大小在其周围绘制线条。如果您想要任何特殊的东西,例如仅在一侧(或更厚的一侧)使用框架,那么您也可以使用 TikZ 或 PSTricks 等绘图包来执行此操作。实际上,提到的mdframe
包确实使用了其中之一。
\documentclass{article}
\usepackage{adjustbox}
\newenvironment{myquote}{%
\par\smallskip\par\noindent
\adjustbox{%
minipage=\linewidth-0.6in, % to get your 2x0.3in border
fbox=2pt, % 2pt frame all around
Clip=0pt 1pt 1pt 1pt, % remove 1pt of the bottom, top and right frame
center % center the whole thing (around \linewidth)
}\bgroup
}{%
\egroup
\par\smallskip\par
}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begin{myquote}
\lipsum[2]
\end{myquote}
\lipsum[3]
\end{document}
答案3
如果你不需要分页符,那真的很简单:
\documentclass{article}
\usepackage{array,xcolor,lipsum}
\newenvironment{myquote}
{\par\medskip\noindent\hspace*{0.3in}
\tabular{!{\color{blue!40}%
\vrule width 5pt}p{\dimexpr\linewidth-0.6in-2\tabcolsep-5pt\relax}|}\hline}
{\\\hline\endtabular\par\medskip}
\begin{document}
\lipsum[1]
\begin{myquote}
\lipsum[1]
foo bar baz
\end{myquote}
\lipsum[1]
\end{document}
答案4
mdframed
如果您需要能够跨越页面边界,使用可能是最佳选择。除了加粗线条,您还可以使用tikz
阴影来突出显示所需的边缘。在这里,我改编了高度灵活矩形的新命令。您不仅可以调整的值xshift
来获得更厚的阴影,而且tikz
可以根据需要自定义的全部功能:
\documentclass[border=5pt]{standalone}
\usepackage{calc}
\usepackage{xcolor}
\usepackage{lipsum}
\usepackage{tikz}
\usetikzlibrary{shadows}
\tikzstyle{shadedbox} = [
text width=0.97\linewidth,
draw=black,
shade, top color=white, bottom color=white,
drop shadow={
top color=black,
bottom color=black,
shadow xshift=-1.5pt,% add shading on left
shadow yshift=-0.5pt,% 0pt removes shading at bottom
},
rectangle,
]
\newcommand{\myquote}[2][]{%
\noindent%
\begin{tikzpicture}%
\node [shadedbox, #1] (box) {#2};%
\end{tikzpicture}%
}
\newcommand{\ShortLoremIpsum}{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam turpis turpis, rutrum vel facilisis nec, scelerisque ut nisi.
Proin et elit sapien. Ut non ante tellus. Pellentesque et tempus metus. Phasellus sit amet est nisl, a varius elit. Nunc nunc magna, molestie sit amet fermentum a, facilisis at urna.
}%
\begin{document}
\myquote{\ShortLoremIpsum}
\myquote[bottom color=yellow!10]{\ShortLoremIpsum}
\myquote[rounded corners=5pt, line width=1.0pt, draw=blue]{\ShortLoremIpsum}
\myquote[text width=0.6\linewidth, top color=red!10, densely dotted]{\ShortLoremIpsum}
\end{document}