tcolorbox 环境用于绘制可配置数字和颜色的垂直线?

tcolorbox 环境用于绘制可配置数字和颜色的垂直线?

我受到了以下链接中 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 useand

在撰写我的请求,分析我的问题并浏览包裹的说明时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}

相关内容