LaTeX中的框以及框中的子图

目录

文章目录

  • 目录
  • 框(盒子)
    • \fbox
    • framed包
      • framed环境
      • leftbar环境
    • mdframed包
    • fcolorbox命令
    • tcolorbox包
    • adjustbox包
      • 调整盒子的宽度和高度
      • 旋转盒子
  • 框中的子图
    • 问题一:框中插入图片
    • 问题二:给框中图片加上图名、编号
      • caption包
    • 问题三:框中加入含有子图的图
      • subcaption包

框(盒子)

在LaTeX中,有几个包或命令可以用来生成框。以下是其中一些常用的包和命令:

\fbox

\fbox{内容}命令可以用来创建一个简单的方框,将指定的内容放在框内。但是,不会自动换行,并且如果其中的内容过长,会超出页面边界。因此,除非是很少的文字加框,一般不建议使用。

\setlength{\fboxrule}{3pt}
\setlength{\fboxsep}{7pt}
\fbox{这是一个简单的fbox框。}

在这里插入图片描述

framed包

这个包提供了更多灵活的框架命令。

framed环境

你可以使用\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}

在这里插入图片描述

leftbar环境

使用\begin{leftbar}…\end{leftbar}环境来创建一个带有左边栏的框。

\setlength{\FrameRule}{2pt}
\setlength{\FrameSep}{10pt}
\begin{leftbar}
这是一个简单的leftbar环境创建的“框”。
\end{leftbar}

在这里插入图片描述

mdframed包

这个包提供了高度可定制的框架环境。它支持不同的边框样式、阴影效果、背景色等。你可以使用\begin{mdframed}…\end{mdframed}环境来创建一个框。

\begin{mdframed}[
linecolor=blue, 
linewidth=2pt, 
backgroundcolor=yellow, 
innertopmargin=10pt, 
innerbottommargin=10pt, 
leftmargin=20pt, 
rightmargin=20pt]
这是一个定制的mdframed环境创建的框。
\end{mdframed}


在这里插入图片描述

fcolorbox命令

在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框。} 

LaTeX中的框以及框中的子图_第1张图片
实际上,虽然fcolorbox能够设置背景颜色,框线颜色等。它可以设置的参数并不多。所以灵活性稍差。

tcolorbox包

这个包提供了非常强大的定制框的功能,支持多种边框样式、背景色、渐变色、阴影效果、圆角等。你可以使用\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}

LaTeX中的框以及框中的子图_第2张图片

adjustbox包

这个包提供了对盒子的调整和定制功能。虽然它主要用于调整盒子的大小和位置,但也可以用于生成框。你可以使用\adjustbox{frame}{内容}命令来创建一个带有边框的框。
adjustbox宏包为LaTeX提供了对盒子和图像进行调整和定制的功能。它提供了一系列选项和命令,可以控制盒子的大小、位置、旋转、裁剪等操作。

下面是一些使用adjustbox宏包的示例,展示了如何进行常见的盒子和图像调整操作:

调整盒子的宽度和高度

\adjustbox{width=5cm,height=3cm}{This is an adjusted box.}

LaTeX中的框以及框中的子图_第3张图片

在上述示例中,我们使用adjustbox宏包的widthheight选项来调整盒子的宽度和高度。

旋转盒子

\adjustbox{width=10cm,height=3cm,rotate=45}{This is a rotated box.}

LaTeX中的框以及框中的子图_第4张图片

这个示例中,我们使用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是一张图片。你要保证你的代码所在的文件夹中有这张图片。这个代码编译后显示:
LaTeX中的框以及框中的子图_第5张图片

问题二:给框中图片加上图名、编号

但是这个图片没有图名。当你尝试在\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中的框以及框中的子图_第6张图片

caption包

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中的框以及框中的子图_第7张图片

subcaption包

在LaTeX中,subcaption 宏包主要用于为浮动环境(如图形和表格)中的子对象提供标题。这个宏包特别适用于当你有多个子图(subfigures)或子表(subtables)在一个浮动环境中,并且希望每个子对象都有自己的标题和可选的子标签。这些子标题可以帮助读者更好地理解每个子对象的内容,并且它们也可以被引用。

subcaption 宏包提供了\subcaption、\subfigure 和 \subtable 等命令,这些命令可以在包含它们的父浮动环境内部使用。每个子对象都可以有其自己的标题和标签,并且它们的列表也可以被包含在总的图形目录或表格目录中。

你可能感兴趣的:(LaTex)