我有一个包含示例的大文件,其中的代码和输出应该彼此相邻,我使用选项“列出侧文本”获得这些框。但在某些情况下,代码应该位于文本上方(默认情况下如此)。但在使用选项“列出侧文本”之后,无论我尝试什么,我都无法返回此默认值。我一定是忽略了手册中的某些内容,而且我一直忽略它。所以请问有人能给我提示吗?
\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}
其他选项包括sidebyside
:text side listing
,,,listing side text
。comment side listing
listing side comment
原始答案:
这似乎是listing side text
修复一些未被覆盖/删除的参数的问题,但如果您在或对每个选项使用特定的listing above text
声明中声明这些选项,问题就会消失。tcblisting
newtcblistings
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}