边框

本页从简单到强大,依次介绍如何给一段文字或一组段落 加上边框。如果只是框住一个词或一行,内建的 \fbox{...}\framebox[width][pos]{...} 就够了,但它们 不能跨行或跨页断开。若要框住整段并允许跨页,使用 framed package(framedshadedleftbar 环境);若要框住公式,用 amsmath 的 \boxed{...};若要自由控制颜色、标题、分页和圆角,标准选择是建立在 TikZ 之上的最强选项 tcolorbox。最后还会介绍另一种可跨页边框 mdframed

内建边框 — \fbox 与 \framebox

\fbox{...} 不需要加载任何 package 就能使用:它会紧贴参数内容画一个细边框。若要指定宽度或对齐方式,使用 \framebox[width][position]{...}。第一个可选参数 width 指定盒子的宽度;第二个 position 指定内容在盒子中的位置:c(居中,默认)、l(左对齐)、r(右对齐)、s(拉伸到两端)。不带选项的 \framebox\fbox 行为相同。

边框外观由两个长度控制。\fboxrule线条粗细(默认 0.2pt),\fboxsep边框与内容之间的 padding(默认 3pt)。二者都可用 \setlength 修改。例如要画更粗、更宽松的边框:

latex
\setlength{\fboxrule}{1pt}
\setlength{\fboxsep}{8pt}
\fbox{ここを枠で囲みます}

\framebox[5cm][l]{左寄せで幅 5cm}

关键注意点是:\fbox\framebox 都不会让内容换行。给它们一段长文字,内容会保持一行横向伸出,不会跨行或跨页断开。若要框住多行,先把内容放进 \parboxminipage 再框起来(\fbox{\parbox{0.8\linewidth}{…}}),或使用下面面向段落的 package。注意 \fbox 是放在文字 baseline 上的行内盒子,因此能自然地与 \hspace 和其他行内材料并排。minipage\parbox 本身的用法见“Boxes”页面。

框住段落并跨页 — framed

\fbox 不能换行的弱点,可由 \usepackage{framed} 加载的 framed package 弥补。核心的 framed 环境 最大特点是被框住的材料 可以跨页断开,因此能把很长的提示或侧栏整体放进边框。配套的 shaded 环境 不画边线而是 填充背景leftbar 环境 则在 左侧画一条竖线,常用于引用块标记。

latex
\usepackage{framed}

\begin{framed}
  この段落は枠で囲まれます。中身が長くてページの
  終わりに達しても、枠は自然に分割されて次のページへ
  続きます。\fbox にはできない芸当です。
\end{framed}

shaded,通过 \colorlet{shadecolor}{...} 定义颜色 shadecolor 来设置背景(需要加载 colorxcolor)。线条粗细和 padding 用与 \fbox 类似的长度 \FrameRule\FrameSep 调整。framed 还提供派生环境:oframed(在分页处上下开放的框)、shaded*(与正文宽度对齐的填充)、snugshade(贴合内容的填充)等。重定义 \FrameCommand 或使用 \MakeFramed,还可以构建自己的可断开边框。

framed 轻量且直接,但不能处理圆角、阴影或复杂的带标题框。需要这些效果时,下面的 tcolorbox 更合适。

框住公式 — \boxed

若要把结论公式框起来突出显示,使用 amsmath\boxed{...}\fbox 是 text mode 命令,在数学中表现不佳;\boxed 则是 专用于 math mode 的命令,会先把参数作为数学内容排版,再加上边框。加载 \usepackage{amsmath},并在 math mode 中使用。

latex
\usepackage{amsmath}

\[
  \boxed{E = mc^2}
\]

\boxed 画出的边框内部其实是 \fbox,因此会受到 \fboxrule\fboxsep 的影响。可以框住 align 等对齐环境中的某一行,但若要把边框漂亮地围住公式编号或多行公式,随 mathtools 提供的 empheq package 更灵活。math mode 的一般内容请参见“Math mode basics”页面。

最强大的边框 — tcolorbox

几乎所有边框需求,颜色、标题、分页等,tcolorbox(Thomas Sturm 制作)都能满足。常见加载方式是 \usepackage[most]{tcolorbox},一次启用大量附加 library;most 会加载大部分 library,但排除依赖 minted 等外部工具的部分。由于 tcolorbox 建立在 pgf/TikZ 之上,底层绘制由 TikZ 完成,边框也继承了它的表现力。

按三层来记会比较清楚。只想在行内放一个小框,用 \tcbox{...};它会生成贴合内容宽度的框,行为类似 \fbox,并且 不会断行,但可接受丰富的颜色和标题选项。要框住一组段落,用 tcolorbox 环境。若同一种样式要反复使用,则用 \newtcolorbox{mybox}{...} 定义可复用的 box

颜色和标题通过 key option 设置。colback=背景色colframe=边框颜色,给出 title= 会生成 带标题的框(标题条)。添加 breakable 后,框可以 跨页sharp corners(直角)/ rounded corners(圆角,默认)、boxrule=(边线粗细,默认 0.5mm)、arc=(圆角半径,默认 1.0mm)用于调整形状。标题条颜色用 colbacktitle=,标题字体用 fonttitle= 设置。

latex
\usepackage[most]{tcolorbox}

\begin{tcolorbox}[colback=blue!5, colframe=blue!60!black,
                  title=覚え書き, fonttitle=\bfseries, breakable]
  色付きでタイトルの付いた枠です。\texttt{breakable} を
  指定したので、長くなればページをまたいで分割されます。
\end{tcolorbox}

如果要重复使用同一种外观,就在导言区先定义 box。形式 \newtcolorbox[init options]{name}[number of args][default]{options} 可像 \newenvironment 一样创建 带参数的 box。例如,一个把标题作为参数的提示框可以这样定义:

document.tex
\usepackage[most]{tcolorbox}
\newtcolorbox{note}[1]{%
  colback=yellow!10, colframe=orange!70!black,
  fonttitle=\bfseries, title=#1, breakable}

\begin{document}
\begin{note}{注意}
  これで \texttt{note} 環境を定義しました。引数で
  見出しを渡せます。
\end{note}
\end{document}

skins library(包含在 most 中)还能更进一步:enhanced skin 会启用阴影、双重边框、透明、装饰标题等 TikZ 驱动的复杂外观。还有用于 theorem-like box 的 theorems library,以及把源代码和输出上下分开的两段模式(用 \tcblower 分隔)等,功能非常广。完整内容请查看 texdoc tcolorbox 打开的厚手册(截至 2026 年为 6.9.x 系列)。

另一个选择 — mdframed

如果想要一个比 framed 好看、但不需要 tcolorbox 那么多功能的 可断开边框mdframed 是中间选择。用 \usepackage{mdframed} 加载,并在 mdframed 环境 中包住内容。它是在 framed 基础上扩展的 package,可为 跨页边框 添加颜色、圆角、阴影等。

它的特点是可以选择渲染 backend:除了普通 LaTeX 命令外,指定 framemethod=TikZframemethod=pstricks 可以启用更复杂的装饰。用 \newmdenv{...} 定义自己的 framed environment,或用 \newmdtheoremenv{...} 定义带边框的 theorem environment。下面是一个带圆角和颜色的最小例子:

latex
\usepackage{mdframed}

\begin{mdframed}[backgroundcolor=gray!10, roundcorner=5pt,
                 linecolor=gray!60, linewidth=1pt]
  mdframed の枠です。ページをまたいで折り返せます。
\end{mdframed}

该用哪一个

拿不准时,按任务规模选择最快。快速框住一个词或一行,用 \fbox / \framebox。框住公式,用 \boxed。只是跨段落画框,用轻量的 framed。需要颜色、标题、圆角和分页,用 tcolorbox(前一级选择是 mdframed)。颜色名和混色见“Colors (xcolor)”,长度单位以及 \fboxsep 这类尺寸的概念见“Lengths & spacing”,一般 box(\parboxminipage\rule)见“Boxes”页面。

使用对象可框住的内容可跨页?适合用途
\fbox / \framebox一行内容快速框住词或短行
\boxed数学内容(math mode)强调结论公式
framed段落块轻量框住段落
mdframed段落块适度使用颜色和圆角
tcolorbox块、行内、定理颜色、标题和装饰的完整工具