我正在尝试lstlisting
使用tcolorbox
(按照建议)将环境居中这里)。该方法确实可以正常工作,但是在环境中无法按预期呈现,enumerate
如下所示:
我尝试了以下操作并进行过多次调整,但没有任何效果。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{listings}
\usepackage{enumitem}
\usepackage[most]{tcolorbox}
\newenvironment{code}[1][]{%
\tcbwritetemp}%
{\endtcbwritetemp%
\tcbox[before=\begin{center},after=\end{center}]%
{\tcbusetemplisting}%
}%
\begin{document}
Start a list:
\begin{enumerate}[label = \textbf{--}]
\item Inside enumerate not working.
\begin{code}
if(x == 0){
return 0;
}else{
return 1;
}\end{code}
\end{enumerate}
This is what I want to achieve inside enumerate environment
\begin{code}
if(x == 0){
return 0;
}else{
return 1;
}
\end{code}
\end{document}
我怎样才能实现期望的输出大致保持所用逻辑的相同大纲?
答案1
lstlisting
在 中调用,在列表环境中使用时,\tcbox
使用当前总左边距 ( ) 相应地缩进列表。当您直接在列表环境中使用时,此方法效果很好,但在 中失败。发生这种情况似乎是因为已经缩进框并再次缩进代码。对我来说,这看起来像是包中的一个错误。\@totalleftmargin
lstlisting
\tcbox
\tcbox
lstlisting
tcolorbox
一个简单的修复方法是在环境中重置\@totalleftmargin
为0pt
本地code
:
\makeatletter
\newenvironment{code}[1][]{%
\@totalleftmargin=0pt%
\tcbwritetemp}%
{\endtcbwritetemp%
\tcbox[before=\begin{center},after=\end{center}]%
{\tcbusetemplisting}%
}%
\makeatother
给出所需的输出