我受到了以下链接中 Ignasi 代码的启发:
使用一条横跨多页的波浪线标记(突出显示)一个段落(\item{…})
我对其进行了修改以执行以下命令:沿着左边距的文本绘制#1
相同颜色的平行线。#2
\documentclass{article}
\usepackage{lipsum}
\usepackage[most]{tcolorbox}
\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing,calc}
\newcommand{\mycolorbarmarg}[2]{
\newtcolorbox{mybox}[1][]{%
enhanced, blank, breakable,
overlay ={\foreach \t in {0,...,#1}{
\draw[decorate,ultra thick,#2] ([xshift=-3-\t mm]frame.north west)--([xshift=-3-\t mm]frame.south west);},
}}
\begin{mybox}
#3
\end{mybox}
}
\begin{document}
\lipsum[1]
\mycolorbarmarg{2}{red}{\lipsum[1-5]}
\end{document}
但该命令不能被调用多次,否则会出现如下错误信息:
! LaTeX Error: Command \mybox already defined.
Error when I call at least twice \mycolorbarmarg
\mycolorbarmarg{2}{red}{\lipsum[1-5]}
\mycolorbarmarg{2}{red}{\lipsum[1-5]}
据我了解:该命令\mycolorbarmarg
想要覆盖该mybox
命令,但该命令不允许!
理想的环境是tcolorbox
具有参数#1
(行数)和#2
(颜色)的环境,如下所示,但当然不是正确的代码:
\documentclass{article}
\usepackage{lipsum}
\usepackage[most]{tcolorbox}
\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing,calc}
%%%%% something like this:
\newtcolorbox{mybox}[3]{%
enhanced, blank, breakable,
overlay ={\foreach \t in {0,...,#1}{ %
\draw[decorate,ultra thick,#2] ([xshift=-1-\t mm]frame.north west)--([xshift=-1-\t mm]frame.south west);},
}}
\begin{document}
\lipsum[1]
% for some environment like this :
\begin{mybox}[#1,#2]\lipsum[1]\end{mybox}
\lipsum[1]
\end{document}
newtcolorbox
我首先想到的是如何解决调用问题但却产生了很多问题:
\documentclass{article}
\usepackage{lipsum}
\usepackage[most]{tcolorbox}
\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing,calc}
\newcounter{tmp}
\setcounter{tmp}{1}
\newcommand{\mycolorbarmarg}[2]{
\newtcolorbox{mybox\thetmp}[1][]{%
enhanced, blank, breakable,
overlay ={\foreach \t in {0,...,#1}{
\draw[decorate,ultra thick,#2] ([xshift=-3-\t mm]frame.north west)--([xshift=-3-\t mm]frame.south west);},
}}
\begin{mybox\thetmp}
#3
\end{mybox\thetmp}
\addtocounter{tmp}{1}}
\begin{document}
\lipsum[1]
\mycolorbarmarg{2}{red}{\lipsum[1-5]}
\mycolorbarmarg{1}{blue}{\lipsum[1]}
\mycolorbarmarg{3}{black}{\lipsum[1-5]}
\mycolorbarmarg{0}{green}{\lipsum[1]}
\end{document}
创建这么多让我很烦恼...如果有一个来自#1 #2`的环境或命令作为参数\newtcolorbox
会更好!tcolorboxù package directly that would use
and
在撰写我的请求,分析我的问题并浏览包裹的说明时tcolorbox
,我发现\renewtcolorbox
它允许我编写这个也有效的代码:
\documentclass{article}
\usepackage{lipsum}
\usepackage[most]{tcolorbox}
\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing,calc}
%%%%% necessary for renewtcolorbox to have something to redefine
\newtcolorbox{mybox}[1][]{
enhanced, blank, breakable,
overlay ={%
\draw[decorate,ultra thick,black] ([xshift=-3 mm]frame.north west)--([xshift=-3 mm]frame.south west);},
}
%%%%% a command width \renewtcolorbox
\newcommand{\mycolorbarmarg}[2]{
\renewtcolorbox{mybox}[1][]{%
enhanced, blank, breakable,
overlay ={\foreach \t in {0,...,#1}{
\draw[decorate,ultra thick,#2] ([xshift=-3-\t mm]frame.north west)--([xshift=-3-\t mm]frame.south west);},
}}
\begin{mybox}
#3
\end{mybox}
}
\begin{document}
\lipsum[1]
\mycolorbarmarg{2}{red}{\lipsum[1-5]}
\mycolorbarmarg{1}{blue}{\lipsum[1]}
\mycolorbarmarg{3}{black}{\lipsum[1-5]}
\mycolorbarmarg{0}{green}{\lipsum[1]}
\end{document}
我更喜欢这个,但它也不是一个tcolorbox
以#1
和#2
作为参数的环境。
您知道是否有可能用来实现这样的环境吗tcolorbox
?
我想使用\begin{mybox}[#1,#2]\lipsum[1-]\end{mybox}
来#1
表示线数以及#2
它们的颜色?
答案1
那这个呢?
\documentclass{article}
\usepackage{lipsum}
\usepackage[most]{tcolorbox}
\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing,calc}
\newtcolorbox{mycolorbarmarg}[2]{
enhanced, blank, breakable,
overlay = {
\foreach \t in {0,...,#1}{
\draw[decorate,ultra thick, #2]
([xshift=-3-\t mm]frame.north west)
--
([xshift=-3-\t mm]frame.south west);
},
}
}
\begin{document}
\lipsum[1]
\begin{mycolorbarmarg}{2}{red}
\lipsum[1-5]
\end{mycolorbarmarg}
\begin{mycolorbarmarg}{4}{blue}
\lipsum[1-5]
\end{mycolorbarmarg}
\end{document}