将两列 tcolorbox 解决方案放入环境/宏中

将两列 tcolorbox 解决方案放入环境/宏中

所以我读了这个答案并且喜欢 tcolorbox 的结果:

https://tex.stackexchange.com/a/271436/98870

解决方案是有效地使用以下代码:

\begin{tcolorbox}[
    blanker,
    width=0.64\textwidth,enlarge left by=0.36\textwidth,
    before skip=6pt,
    breakable,
    overlay unbroken and first={%
    \node[inner sep=0pt,outer sep=0pt,text width=0.33\textwidth,
    align=none,
    below right]
    at ([xshift=-0.36\textwidth]frame.north west)
{ 
    LEFT COLUMN TEXT
  };}]
    RIGHT COLUMN TEXT
\end{tcolorbox}

答案是

如果需要,可以将所有内容放入宏或环境中以获得更好的界面。

但我不确定如何做到这一点。我以为这意味着像这样的环境

\begin{twocolumns}
   LEFT COLUMN TEXT
   \nextcolumn
   RIGHT COLUMN TEXT
\end{twocolumns}

\newenvironment{}但是由于在整个解决方案中使用了括号, 我不明白如何使用命令轻松地执行此操作(例如\nextcolumn," 命令相当于使用行 来关闭节点};}])。任何帮助将其转换为上述形式或更有用的形式(是否有更好的主意?不确定!)都将不胜感激!

答案1

这里有两个选项。两个示例文档都呈现相同的输出:

新宏

您可以定义一个带有两个参数的宏,每列一个参数。

\documentclass{article}
\usepackage[skins,breakable]{tcolorbox}
\newcommand{\twocolumnsbox}[2]{%
    \begin{tcolorbox}[
        blanker,
        width=0.64\textwidth,enlarge left by=0.36\textwidth,
        before skip=6pt,
        breakable,
        overlay unbroken and first={%
        \node[inner sep=0pt,outer sep=0pt,text width=0.33\textwidth,
        align=none,
        below right]
        at ([xshift=-0.36\textwidth]frame.north west)
    { 
        #1
      };}]
        #2
    \end{tcolorbox}%
}
\begin{document}

\twocolumnsbox{Left column text}{Right column text}

\end{document}

新环境

您还可以定义一个新环境,以左列文本作为参数,并将右列文本放置在环境内。

\documentclass{article}
\usepackage[skins,breakable]{tcolorbox}
\newenvironment{twocolumns}[1]{
    \begin{tcolorbox}[
        blanker,
        width=0.64\textwidth,enlarge left by=0.36\textwidth,
        before skip=6pt,
        breakable,
        overlay unbroken and first={%
        \node[inner sep=0pt,outer sep=0pt,text width=0.33\textwidth,
        align=none,
        below right]
        at ([xshift=-0.36\textwidth]frame.north west)
    { 
        #1
      };}]%
    }{%
    \end{tcolorbox}%
}
\begin{document}

\begin{twocolumns}{Left column text}
Right column text
\end{twocolumns}

\end{document}

相关内容