tcolorbox:取消设置或否决选项“列表侧文本”

tcolorbox:取消设置或否决选项“列表侧文本”

我有一个包含示例的大文件,其中的代码和输出应该彼此相邻,我使用选项“列出侧文本”获得这些框。但在某些情况下,代码应该位于文本上方(默认情况下如此)。但在使用选项“列出侧文本”之后,无论我尝试什么,我都无法返回此默认值。我一定是忽略了手册中的某些内容,而且我一直忽略它。所以请问有人能给我提示吗?

\documentclass{article}
\usepackage[most]{tcolorbox}
\tcbset{%
  colback=red!5!white,colframe=red!75!black,
  colbacklower=white,
  fonttitle=\bfseries,
}

\begin{document}
\begin{tcblisting}{title= Text above}
\LaTeX{} in a Box
\end{tcblisting}

\tcbset{%
  listing side text,
}

\begin{tcblisting}{title= Text aside}
\LaTeX{} in a Box
\end{tcblisting}

\tcbset{%
  listing above text,
}

\begin{tcblisting}{title= Text ???}
\LaTeX{} in a Box
\end{tcblisting}

\end{document}

答案1

更新:

举报后这个问题,我收到答复了。

listing side text相当于listing and text+ sidebyside。如果此样式是全局定义的,则类似listing above text只会更改第一个设置,而sidebyside仍然有效。我们需要添加sidebyside=false以避免其影响。

正如您在我之前的回答中所看到的,如果样式是在本地应用的,我们就不需要sidebyside=false

您的代码的工作版本应该是:

\documentclass{article}
\usepackage[most]{tcolorbox}
\tcbset{%
  colback=red!5!white,colframe=red!75!black,
  colbacklower=white,
  fonttitle=\bfseries,
}

\begin{document}
\begin{tcblisting}{title= Text above}
\LaTeX{} in a Box
\end{tcblisting}

\tcbset{%
  listing side text, %<-- = listing and text, sidebyside
}

\begin{tcblisting}{title= Text aside}
\LaTeX{} in a Box
\end{tcblisting}

\tcbset{%
  listing above text,
  sidebyside=false   %<---- To delete previous `sidebyside`
}

\begin{tcblisting}{title= Text ???}
\LaTeX{} in a Box
\end{tcblisting}

\end{document}

其他选项包括sidebysidetext side listing,,,listing side textcomment side listinglisting side comment

原始答案:

这似乎是listing side text修复一些未被覆盖/删除的参数的问题,但如果您在或对每个选项使用特定的listing above text声明中声明这些选项,问题就会消失。tcblistingnewtcblistings

listing使用通用选项的解决方案tcblisting

\documentclass{article}
\usepackage[most]{tcolorbox}
\tcbset{%
  colback=red!5!white,colframe=red!75!black,
  colbacklower=white,
  fonttitle=\bfseries,
}

\begin{document}
\begin{tcblisting}{title= Text above}
\LaTeX{} in a Box
\end{tcblisting}

\begin{tcblisting}{title= Text aside, listing side text}
\LaTeX{} in a Box
\end{tcblisting}

\begin{tcblisting}{title= Text ???, listing above text}
\LaTeX{} in a Box
\end{tcblisting}

\end{document}

在此处输入图片描述

解决方案为每个选项声明特定列表:

\documentclass{article}
\usepackage[most]{tcolorbox}
\tcbset{%
  colback=red!5!white,colframe=red!75!black,
  colbacklower=white,
  fonttitle=\bfseries,
}

\newtcblisting{mylisting}[2][]{
    title=#2,
    #1
}

\newtcblisting{sidelisting}[2][]{
    title=#2,
    listing side text,
    #1
}

\newtcblisting{abovelisting}[2][]{
    title=#2,
    listing above text,
    #1
}

\begin{document}
\begin{mylisting}{Text above}
\LaTeX{} in a Box
\end{mylisting}

\begin{sidelisting}{Text aside}
\LaTeX{} in a Box
\end{sidelisting}

\begin{abovelisting}[colback=blue!5!white, colframe=blue!75!black]{Text ???}
\LaTeX{} in a Box
\end{abovelisting}

\begin{abovelisting}[listing side text]{Text ???}
\LaTeX{} in a Box
\end{abovelisting}

\end{document}

在此处输入图片描述

相关内容