众所周知,在tcolorbox中,盒子的宽度是固定的。要想制作可变宽度的盒子,可以使用\tcbox命令。但是tcbox有一个问题:不会自动换行。如果文本过长且不手动换行,那么盒子会跑到页面外边。如何解决这个问题呢?

来源:https://tex.stackexchange.com/questions/595619/alignment-and-width-with-tcolorbox
解决方法非常简单:在tcbox里面嵌套一层varwidth,例:
1 | \documentclass[zihao=-4]{ctexart} |

此时盒子略微超出了文字边界,这是因为盒子本身带有宽度,减去即可:
1 | \documentclass[zihao=-4]{ctexart} |

要注意:\linewidth不能直接参与计算,需要嵌套\dimexpr。
解释一下这个11mm怎么来的:左边:leftrule=0.5mm、boxsep=1mm、left=4mm;右边:right=4mm、boxsep=1mm、rightrule=0.5mm。
另外,在https://tex.stackexchange.com/questions/588927/change-margins-for-tcolorbox-with-varwidth-environment提到了另一种分法,不过我没看懂。