我希望获得如下图所示的效果(我用 Z!代替了危险符号)。
在下面的代码中,我想将危险符号放在垂直规则上。
我认为可以通过在垂直规则的开始处放置一种框来实现,该框将具有白色背景并包含符号。
如果可以在每个违反垂直规则的新页面上添加符号,那就太好了。
\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[x11names, svgnames]{xcolor}
\usepackage{mdframed}
\usepackage{graphicx}
\usepackage{fourier-orns}
\definecolor{warningColor}{named}{Red3}
\newcommand{\warningSymbol}{\raisebox{\depth}{\danger}}
\newenvironment{Warning}{%
\bigskip
\begin{mdframed}[%
topline=false,%
rightline=false,%
bottomline=false,%
innertopmargin=0.4em,%
innerbottommargin=0.4em,%
innerrightmargin=0.7em,%
rightmargin=0.7em,%
innerleftmargin=0.7em,%
leftmargin=0.7em,%
linewidth=.2em,%
linecolor=warningColor%
]
\color{warningColor}
}{%
\end{mdframed}%
\bigskip
}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begin{Warning}
\lipsum
\end{Warning}
\lipsum[1]
\end{document}
答案1
我提供了一个 TikZ 解决方案,其工作原理与 类似framemethod=pstricks
。如果您正在使用,framemethod=default
则必须修补内部命令。这基于实现。标准实现不知道“节点”。
为了定义您所请求的环境,我建议如下。
首先定义一个 tikzstyle,它代表放置危险符号的节点。raisebox
您可以使用 tikz 选项,而不是使用原始定义scale
。在下一步中,我通过 定义全局样式\mdfdefinestyle
。该包mdframed
提供了应该使用的选项fontcolor
。在您的情况下,通过在环境开始后设置,\color{warningColor}
如果框被拆分,颜色修改将不起作用。
为了在输出的每个部分的左线上放置一个节点,我使用了新选项(版本 1.5)、和singleextra
。firstextra
这些选项将材质添加到 tikz 环境中,以便您可以修改输出。因此,我返回到 mdframed 的定义坐标(框的左下点)和(框的右下点)并计算位置。在示例中,位置设置为。您可以简单地设置顶部和底部。secondextra
middleextra
P
O
0.5
1
0
第一步:
\tikzset{
warningsymbol/.style={
rectangle,
draw=warningColor,
fill=white,
scale=1,
overlay}
}
第二步:
\mdfdefinestyle{warning}{%
hidealllines=true,leftline=true,
skipabove=12,skipbelow=12pt,
innertopmargin=0.4em,%
innerbottommargin=0.4em,%
innerrightmargin=0.7em,%
rightmargin=0.7em,%
innerleftmargin=1.7em,%
leftmargin=0.7em,%
middlelinewidth=.2em,%
linecolor=warningColor,%
fontcolor=warningColor,%
firstextra={\path let \p1=(P), \p2=(O) in ($(\x2,0)+0.5*(0,\y1)$)
node[warningsymbol] {\danger};},%
secondextra={\path let \p1=(P), \p2=(O) in ($(\x2,0)+0.5*(0,\y1)$)
node[warningsymbol] {\danger};},%
middleextra={\path let \p1=(P), \p2=(O) in ($(\x2,0)+0.5*(0,\y1)$)
node[warningsymbol] {\danger};},%
singleextra={\path let \p1=(P), \p2=(O) in ($(\x2,0)+0.5*(0,\y1)$)
node[warningsymbol] {\danger};},%
}
通过这些修改,您将获得以下输出:
完整代码:
\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[x11names, svgnames]{xcolor}
\usepackage[framemethod=tikz]{mdframed}
\usetikzlibrary{calc}
\usepackage{fourier-orns}
\definecolor{warningColor}{named}{Red3}
\tikzset{
warningsymbol/.style={
rectangle,
draw=warningColor,
fill=white,
scale=1,
overlay}
}
\mdfdefinestyle{warning}{%
hidealllines=true,leftline=true,
skipabove=12,skipbelow=12pt,
innertopmargin=0.4em,%
innerbottommargin=0.4em,%
innerrightmargin=0.7em,%
rightmargin=0.7em,%
innerleftmargin=1.7em,%
leftmargin=0.7em,%
middlelinewidth=.2em,%
linecolor=warningColor,%
fontcolor=warningColor,%
firstextra={\path let \p1=(P), \p2=(O) in ($(\x2,0)+0.5*(0,\y1)$)
node[warningsymbol] {\danger};},%
secondextra={\path let \p1=(P), \p2=(O) in ($(\x2,0)+0.5*(0,\y1)$)
node[warningsymbol] {\danger};},%
middleextra={\path let \p1=(P), \p2=(O) in ($(\x2,0)+0.5*(0,\y1)$)
node[warningsymbol] {\danger};},%
singleextra={\path let \p1=(P), \p2=(O) in ($(\x2,0)+0.5*(0,\y1)$)
node[warningsymbol] {\danger};},%
}
\newmdenv[style=warning]{Warning}
\usepackage{lipsum}
\begin{document}
\begin{Warning}
\lipsum[1]
\end{Warning}
\lipsum[1]
\begin{Warning}
\lipsum\lipsum[1]
\end{Warning}
\lipsum[1]
\end{document}