在LaTeX中,有几个包或命令可以用来生成框。以下是其中一些常用的包和命令:
\fbox{内容}命令可以用来创建一个简单的方框,将指定的内容放在框内。但是,不会自动换行,并且如果其中的内容过长,会超出页面边界。因此,除非是很少的文字加框,一般不建议使用。
\setlength{\fboxrule}{3pt}
\setlength{\fboxsep}{7pt}
\fbox{这是一个简单的fbox框。}
这个包提供了更多灵活的框架命令。
你可以使用\begin{framed}…\end{framed}环境来创建一个带有标题的框。在framed环境中放置了一段文本。framed环境会自动为其中的内容添加边框,默认情况下边框的样式是实线,宽度是1pt。
你也可以根据需要对framed环境进行定制。以下是一些常用的设置选项:
\setlength{\FrameRule}{2pt}:设置边框线的宽度为2pt。
\setlength{\FrameSep}{10pt}:设置边框与其中的内容之间的间距为10pt。
\setlength{\fboxrule}{1pt}:设置边框线的宽度为1pt(适用于\fbox命令)。
\setlength{\fboxsep}{10pt}:设置边框与其中的内容之间的间距为10pt(适用于\fbox命令)。
你可以将这些设置可以放在导言区或者在文档中使用framed环境之前进行设置。
\setlength{\FrameRule}{2pt} % 设置边框线的宽度
\setlength{\FrameSep}{10pt} % 设置边框线与内容之间的间距
\setlength{\leftmargin}{0pt} % 将左边框与左边距对齐
\begin{framed}
This is a customized framed text.
\end{framed}
使用\begin{leftbar}…\end{leftbar}环境来创建一个带有左边栏的框。
\setlength{\FrameRule}{2pt}
\setlength{\FrameSep}{10pt}
\begin{leftbar}
这是一个简单的leftbar环境创建的“框”。
\end{leftbar}
这个包提供了高度可定制的框架环境。它支持不同的边框样式、阴影效果、背景色等。你可以使用\begin{mdframed}…\end{mdframed}环境来创建一个框。
\begin{mdframed}[
linecolor=blue,
linewidth=2pt,
backgroundcolor=yellow,
innertopmargin=10pt,
innerbottommargin=10pt,
leftmargin=20pt,
rightmargin=20pt]
这是一个定制的mdframed环境创建的框。
\end{mdframed}
在color包和xcolor包中都有fcolorbox这个命令。但xcolor更好一些。所以我们只说xcolor包里的fcolorbox命令。fcolorbox的语法是
\fcolorbox{边框颜色}{背景色}{内容}
该命令可以用来创建一个带有自定义边框颜色和背景色的框。
例如:
\fcolorbox{red}{yellow}{This is a colored box.}
\linebreak
\fcolorbox{red}{gray}{
\parbox{\textwidth}{
This is a colored box with a wider text.
}
}
\linebreak
\fcolorbox{red}{yellow}{这是一个简单的fcolorbox框。}
实际上,虽然fcolorbox能够设置背景颜色,框线颜色等。它可以设置的参数并不多。所以灵活性稍差。
这个包提供了非常强大的定制框的功能,支持多种边框样式、背景色、渐变色、阴影效果、圆角等。你可以使用\begin{tcolorbox}...\end{tcolorbox}
环境来创建一个高度定制化的框。
\begin{tcolorbox}[colframe=red,colback=yellow]
This is a colored box.
\end{tcolorbox}
\begin{tcolorbox}[colframe=blue,colback=cyan,sharp corners]
This is a colored box with a wider text and sharp corners.
\end{tcolorbox}
\begin{tcolorbox}[title=这是一个框, colback=white, colframe=blue, colbacktitle=yellow, coltitle=black, sharp corners]
这是一段文字,它出现在彩色框内。这个彩色框使用了tcolorbox宏包创建。
\end{tcolorbox}
这个包提供了对盒子的调整和定制功能。虽然它主要用于调整盒子的大小和位置,但也可以用于生成框。你可以使用\adjustbox{frame}{内容}命令来创建一个带有边框的框。
adjustbox
宏包为LaTeX提供了对盒子和图像进行调整和定制的功能。它提供了一系列选项和命令,可以控制盒子的大小、位置、旋转、裁剪等操作。
下面是一些使用adjustbox
宏包的示例,展示了如何进行常见的盒子和图像调整操作:
\adjustbox{width=5cm,height=3cm}{This is an adjusted box.}
在上述示例中,我们使用adjustbox
宏包的width
和height
选项来调整盒子的宽度和高度。
\adjustbox{width=10cm,height=3cm,rotate=45}{This is a rotated box.}
这个示例中,我们使用adjustbox
宏包的rotate
选项将盒子旋转了45度。
需要注意的是,这里并没有出现盒子的框线。要想得到一个框线,还需要结合其它宏包进行设置。
这些示例只展示了adjustbox宏包的一小部分功能。你可以根据具体需求,进一步探索和使用adjustbox宏包提供的其他选项和命令。
在这些包中,tcolorbox包是功能最强大的。推荐使用。
在很多的盒子中,是不能使用figure环境来插入图片的。因为,figure环境是一个浮动环境,它允许内容在页面中自由地浮动,以便LaTeX可以找到最佳的位置来放置它,例如顶部、底部或特定页面的文本中。这种浮动机制是为了处理大块内容(如图形和表格)的页面布局而设计的。
但是并不是说盒子中就不能插入图片,而是不用figure环境插入,直接插入就行了。
例如:
\documentclass{article}
\usepackage{ctex}
\usepackage{graphicx} % 引入graphicx包来使用\includegraphics
\usepackage{xcolor} % 引入xcolor包来使用\fcolorbox
\begin{document}
\noindent % 确保fcolorbox不会缩进
\fcolorbox{blue}{gray!30}{% 创建一个边框颜色为蓝色、背景颜色为浅灰色的文本框
\parbox{\dimexpr\linewidth-2\fboxsep-2\fboxrule\relax}{% 创建一个parbox来正确处理文本和图片的宽度
这是一段文字,后面会紧跟一张图片。\\ % 文本内容
\centering
\includegraphics[width=0.6\linewidth]{a.jpg} % 插入图片,宽度设为\linewidth
}
}
\end{document}
这里a.jpg是一张图片。你要保证你的代码所在的文件夹中有这张图片。这个代码编译后显示:
但是这个图片没有图名。当你尝试在\includegraphics[width=0.6\linewidth]{a.jpg}
的下一行加入图名时,会出现错误。
\caption outside float. ^^I}
大概意思是你这个图名设置没有在figure环境中设置。
解决这个问题的办法就是用caption包。将上面的代码改为:
\documentclass{article}
\usepackage{ctex}
\usepackage{graphicx} % 引入graphicx包来使用\includegraphics
\usepackage{xcolor} % 引入xcolor包来使用\fcolorbox
\usepackage{caption}%自定义浮动环境的标题
\begin{document}
\noindent % 确保fcolorbox不会缩进
\fcolorbox{blue}{gray!30}{% 创建一个边框颜色为蓝色、背景颜色为浅灰色的文本框
\parbox{\dimexpr\linewidth-2\fboxsep-2\fboxrule\relax}{% 创建一个parbox来正确处理文本和图片的宽度
这是一段文字,后面会紧跟一张图片。\\ % 文本内容
\captionsetup{type=figure}
\includegraphics[width=0.6\linewidth]{a.jpg} % 插入图片
\caption{示例图片}
}
}
\end{document}
编译后,结果为:
LaTeX 中的 caption 宏包提供了广泛的功能来自定义浮动环境的标题(caption)。这个包对于那些需要对图表、算法、子图表等的标题进行格式化以适应其出版需求的用户来说非常有用。
使用 caption 宏包,你可以改变标题的许多方面,包括字体、颜色、大小、对齐方式、间距、分隔符和标签等。此外,这个包还能与其他宏包如 subcaption、float、hyperref 等协同工作,为LaTeX文档添加更多的灵活性和功能。
以下是一些 caption 宏包的主要功能:
自定义格式:可以定义标题的整体布局和风格,比如是否挂起(悬挂)、居中或者采用其他格式。
字体选项:可以指定标题的字体大小(如 small、footnotesize 等),以及是否加粗或斜体等样式。
支持双语标题:可以为图表提供主要语言和辅助语言的双语标题。
细粒度控制:可以对标题宽度进行限制,或者对标题的单行/多行表现形式进行调节。
兼容性和扩展性:caption 宏包旨在与其他宏包和文档类兼容,同时也支持用户定义新的标题类型。
列表定制:可以定制图形目录(List of Figures)和表格目录(List of Tables)中的项。
要使用 caption 包中的功能,需要在文档的导言区(preamble)包含这个包:
\usepackage{caption}
一旦包含了 caption 宏包,就可以使用 \captionsetup 命令进行配置,如:
\captionsetup{options}
在这里,options 是一个键值列表,用于指定你想要的标题格式。
例如,如果你想要所有的表格标题都居中并且字体为小号,你可以写:
\captionsetup[table]{justification=centering, font=small}
这行代码将会影响所有表格的标题,使其居中并且使用小号字体。
问题是子图的命令也需要figure环境中才能实现。所以带来了麻烦,后来我用了subcaption包,放弃了使用subfigure包。代码更改如下:
\documentclass{article}
\usepackage{ctex}
\usepackage{graphicx} % 引入graphicx包来使用\includegraphics
\usepackage{xcolor} % 引入xcolor包来使用\fcolorbox
\usepackage{caption}%自定义浮动环境的标题
\usepackage{subcaption}%插入子图
\begin{document}
\noindent % 确保fcolorbox不会缩进
\fcolorbox{blue}{gray!30}{% 创建一个边框颜色为蓝色、背景颜色为浅灰色的文本框
\parbox{\dimexpr\linewidth-2\fboxsep-2\fboxrule\relax}{% 创建一个parbox来正确处理文本和图片的宽度
这是一段文字,后面会紧跟一张图片。\\ % 文本内容
\captionsetup{type=figure}
\begin{center}
\begin{minipage}{0.9\linewidth}
\centering
\captionsetup{type=figure}
% 第一个子图
\begin{subfigure}{0.45\linewidth}
\centering
\includegraphics[width=0.95\linewidth]{a.jpg}
\caption{空间域图像}
\label{fig:spatial}
\end{subfigure}\hfill
% 第二个子图
\begin{subfigure}{0.45\linewidth}
\centering
\includegraphics[width=0.95\linewidth]{b.jpg}
\caption{傅里叶变换后的频率域图像}
\label{fig:freq}
\end{subfigure}
% 总标题
\caption{图像的傅里叶变换}
\label{fig:pic_fft}
\end{minipage}
\end{center}
}
}
\end{document}
编译结果:
在LaTeX中,subcaption 宏包主要用于为浮动环境(如图形和表格)中的子对象提供标题。这个宏包特别适用于当你有多个子图(subfigures)或子表(subtables)在一个浮动环境中,并且希望每个子对象都有自己的标题和可选的子标签。这些子标题可以帮助读者更好地理解每个子对象的内容,并且它们也可以被引用。
subcaption 宏包提供了\subcaption、\subfigure 和 \subtable 等命令,这些命令可以在包含它们的父浮动环境内部使用。每个子对象都可以有其自己的标题和标签,并且它们的列表也可以被包含在总的图形目录或表格目录中。