LaTeX教程(016)-LaTeX文档结构(16)

LaTeX教程(016)- LaTeX \LaTeX LATEX文档结构(16)

接上一讲

我们前面知道,\vref是对\ref的升级,而varioref包也提供了一个对\pageref升级的命令\vpageref。它和\vref的原理很相似,内置了一些判断。

\vpageref[same-page][other-page]{key}

在不指定选项的前提下,它所输出的内容就是\vref字符串去掉其中的\ref字符串。例如,如果\ref的输出是3.3,而\vref输出(我们假设引用和引用对象在彼此的对面)就是3.3 on the facing page,那么\vpageref的输出就是on the facing page,没有前面\ref生成的索引字符串。其它情形依此类推,分别是on the preceding page,on the following page以及on page x。只有引用和引用对象在同一页的时候和\vref不同,这种情况下,\vpageref会输出on the current page。该情形下的字符串被存储在命令\reftextcurrent中,重定义这个命令可以将"on the current page"改成其他你想要的字符串。

另外,\vpageref生成的字符串中,只有on page x中的x可以被自动转换为超链接。

注意,不管使用\vref还是\vpageref,最好在命令前后分别放置一个空格,否则它们生成的字符串很可能会和前后文本连在一起。当然,如果是在一个段落的开头,那么前面的空格就不需要了。

\vpageref\vref多了一个选项。其中same-page选项和\vrefsame-page选项作用相同,用来代替引用和引用对象在同一页时的输出字符串。而other-page用于其他情况,也就是引用和引用对象不在同一页的情况。这种情况下,other-page中内容会放置在原本的输出内容的前面。如"other-page+on the preceding page"等。我们可以做个测试:

\documentclass{book}
\usepackage[a5paper,margin=1.5in]{geometry}
\usepackage[nospace]{varioref}
\usepackage{kantlipsum}
\usepackage[colorlinks=true,linkcolor=blue]{hyperref}
\begin{document}\chapter{A chapter}
\vpageref[same][other]{test}\kant[1]\vpageref[same][other]{test}\kant[2]\label{test}\kant[3]\vpageref[same][other]{test}
\chapter{A chapter two}
\vpageref[same][other]{test}
\end{document}

这里不截图了,自行编译一下。因为有交叉引用,记得要编译两遍。

实际上,像"on the preceding page","on the following page"等文本,也有存储它们的命令,它们分别是

\reftextafter
\reftextafter
\reftextfacebefore
\reftextfaceafter

我们将在下文中讲解这些命令。

\vpageref的星号变体\vpageref*和其原型不同的是它不会生成超链接(注意,经笔者本人测试,该机制并不总是有效的)。

\vpagerefrange命令,其形式如下:

\vpagerefrange[same-page]{first}{last}
\vpagerefrange*[same-page]{first}{last}

它和\vpageref很像,不同的地方是它有两个必选参数,而只有一个选项。该命令用两个索引来确定一个范围,它可以生成如"on page 15-18"这样的索引字符串。我们用一个例子演示一下:

\documentclass{book}
\usepackage[a5paper,margin=1.5in]{geometry}
\usepackage[nospace]{varioref}
\usepackage{kantlipsum}
\usepackage[colorlinks=true,linkcolor=blue]{hyperref}
\begin{document}\chapter{A chapter}
\label{chap:one}\label{chap:oone}
\kant[1]\kant[2]\chapter{A chapter two}\label{chap:two}\label{chap:twoo}\dots some text \dots\vpagerefrange{chap:one}{chap:oone}\vpagerefrange{chap:two}{chap:twoo}\vpagerefrange{chap:one}{chap:two}\vpagerefrange[Customized text]{chap:two}{chap:twoo}\end{document}

编译(只截取部分,记得编译两遍):
在这里插入图片描述

如上面的例子所呈现的那样,如果两标签在同一页上,则只会显示一个页码。更特别地,如果两个标签都在当前页上,并且没有指定same-page选项时,则会显示"on the current page"。这句文本被存储在命令\reftextcurrent中,可以重定义它。而如果指定了该选项,那么此种情况下就会显示我们在选项中自定义的文本(注意,选项只对两个标签都在当前文件时有效)。其它的情况(两个标签在不同页时)则会显示"on pages x-xx"。如果你用了hyperref,那么两个页码都会生成单独的链接,可以跳转至各自的页码。

和前面讲过的命令一样,星号形式的命令可以抑制hyperref包生成链接(注意,该机制也并不总是有效的)。

\vrefrange,它的命令形或如下:

\vrefrange[same-page]{first}{last}

它可以简单地表示成一个由代码:

\ref{first} to \ref{last} \vrefpagerange[same-page]{first}{last}

定义而成的命令。我们在期望表示"chapter 2 to chapter 4 on pages 11-28"这样的索引字符串时,才需要使用它。我们用一个例子演示:

\documentclass{book}
\usepackage[a5paper,margin=1.5in]{geometry}
\usepackage[nospace]{varioref}
\usepackage{kantlipsum}
\usepackage[colorlinks=true,linkcolor=blue]{hyperref}
\begin{document}
% 回忆一下上一篇,\labelformat是用来定制索引字符串的
\labelformat{chapter}{chapter~#1}\chapter{A chapter}
\label{chap:one}\kant[1]\kant[2]\chapter{A chapter two}\label{chap:two}\dots some text \dots\vrefrange{chap:one}{chap:two}\end{document}

编译:

在这里插入图片描述

定义你自己的索引命令

有时候你可能会想用varioref包的内部特性来定义你自己的索引命令,该包为此提供了三个辅助命令。

\vpagerefcompare{key1}{key2}{true-code}{false-code}

该命令比较key1key2处的页码,并且根据比较结果,决定执行true-code还是false-code。如果两个标签的页码相等,就执行true-code,否则执行false-code

\vpagerefnearby{key}{true-code}{false-code}

该命令会判断标签\labek{key}是不是在附近,通过判断它生成的页索引是文本的(如previous, current, next等)还是一个带有数字页码的字符串。如果是前者,执行true-code,否则(后者)执行false-code

\vrefpagenum{cmd}{key}

该命令允许我们定义自己的小命令,以实现类似于前面两个命令所提供的功能。第二个命令是一个标签,也就是我们用在\label中的东西。第一个参数是任意一个命令(注意必须是自定义的,不能和已有的命令重复),在使用了上述命令之后,cmd就会存储key的页码。我们用一个例子演示一下:

\documentclass{book}
\usepackage[a5paper,margin=1.5in]{geometry}
\usepackage[nospace]{varioref}
\begin{document}\chapter{A chapter}
\label{chap:one}\vrefpagenum{\mycmd}{chap:one} %使用\mycmd存储chap:one的页码\mycmd\end{document}

编译:
在这里插入图片描述

这些命令几乎不会用到,这里不详细展开。

语言选项

该包支持由babel系统(第13章会讲到)定义的选项,因此,像`\usepackage[ngerman]{varioref},这样正文中的标签就会生成符合德语的索引字符串。如果你的文档是多语言的,那么就要指定所有的语言。如果你所用的语言不在选项中,那么你就需要定制自己的索引字符串,定制的方法我们后面讲。

个性化的定制

为了更进一步的定制,生成的索引字符串都是由宏来定义的,也就是说,它们存储在一些命令中。在默认情况下(没有设置其他语言的情况下),如果标签在索引的前一页,但不在对面,索引就会生成字符串"on the preceding page"。该文本存储在命令\reftextbefore。而如果标签在索引的前一页,并且它们相互在对方的对面一页,即,标签在左手页,索引在右手页,那么索引就会生成字符串"on the facing page"。该文本存储在命令\reftextfacebefore中。

类似的,如果如果标签在索引的后面一页,但不在对面,索引就会生成字符串"on the following page"。这段文本存储在命令\reftextafter中。而如果标签在索引后面一页,并且在对面,那么就会生成"on the facing page"。该文本存储在命令\reftextfaceafter中。

如上一篇所说,\reftextfacebefore\reftextfaceafter只在双页模式的文档类中才会生效。

而标签和索引在同一页时,生成的索引字符串被存储在命令\reftextcurrent中。

这些命令都可以被重定义,用你想用的语言。

我们作个演示:

\documentclass{ctexbook} % 注意我们要使用到中文
% 因此将文档类改为ctexbook,并且记得使用xelatex引擎编译
\usepackage[a5paper,margin=1.5in]{geometry}
\usepackage[nospace]{varioref}
\usepackage{kantlipsum}
\usepackage[colorlinks=true,linkcolor=blue]{hyperref}
\begin{document}
\chapter{Chapter one}\renewcommand{\reftextbefore}{在上一页}
\renewcommand{\reftextafter}{在下一页}
\renewcommand{\reftextfacebefore}{在左手页}
\renewcommand{\reftextfaceafter}{在右手页}
\renewcommand{\reftextcurrent}{在当前页}\label{test01}\vpageref{test01}\vpageref{test02}\kant[1]
\label{test02}\vpageref{test01}\vpageref{test03}\kant[2]
\label{test03}\vpageref{test02}\end{document}

使用中文时记得使用xelatex引擎编译,并且编译两遍。这里不截图了,读者自行编译。

当标签和索引相距较远时,索引就会调用\reftextfaraway命令。该命令和前面那些命令不同,它有一个参数。默认情况下,它存储的是"on page x"这样的字符串,我们在重定义它的时候可以使用\pageref来生成页码。例如,我们在前面的例子中加上一行重定义命令:

\renewcommand\reftextfaraway[1]{在第~\pageref{#1}~页}

然后在最后的\vpageref{test02}代码后面加上一行\vpageref{test01},再编译就会生成索引字符串"在第 1 页"。

\reftextpagerange\reftextlabelrange的内部定义都非常简单,它们分别通过两个\pageref\ref来表示从一个标签到另一个标签的范围。

如果前面的例子你都自己编译过,那么你可能会发现这样的现象: 不会连续出现两个相同的文本型索引(像on the current page, on the previous page这种)。我们用一个例子演示一下:

\documentclass{book}
\usepackage[a5paper,margin=1.5in]{geometry}
\usepackage[nospace]{varioref}
\begin{document}
\chapter{Chapter one}\label{test01}sometext\dots\vpageref{test01}\vpageref{test01}\vpageref{test01}\vpageref{test01}\end{document}

编译:

在这里插入图片描述

哪怕相邻索引对应的是两个不同的标签的key,只要调用了同一个\reftext...命令,就会显示不同的文本,中间隔着一些内容也不影响:

\documentclass{book}
\usepackage[a5paper,margin=1.5in]{geometry}
\usepackage[nospace]{varioref}
\usepackage{kantlipsum}
\begin{document}\chapter{Chapter one}\label{test01}sometext\dots\vpageref{test01}\kant[1]
\label{test02}\vpageref{test02}\end{document}

内容较多,请读者自行编译。

如果同一个\reftext...命令连续出现多次,则会有两个字符串轮流出现的现象,如前面的例子所示。

但是,如果两个相同的\reftext...命令之间,隔着一个不同的\reftext...命令,就会打破这种限制,也就是说,这两个相同的\reftext...命令生成的文本也可能是相同的。我们演示一下:

\documentclass{book}
\usepackage[a5paper,margin=1.5in]{geometry}
\usepackage[nospace]{varioref}
\usepackage{kantlipsum}
\begin{document}\chapter{Chapter one}\label{test01}sometext\dots\vpageref{test01}\vpageref{test02}\vpageref{test01}\kant[1]
\label{test02}\vpageref{test01}\vpageref{test02}\end{document}

请读者自行编译。

会出现这种现象的不仅仅是\reftextcurrent,文本型索引的那几个命令都有这样的特性。

这是因为varioref包想要将索引文本插入到日常用语中,而为了避免语言上的重复,给每一个\reftext...命令准备了两个不同的字符串,使它们轮流出现。varioref包通过调用\reftextvario命令实现这一特性。该命令有两个参数,它使得这两个参数中的内容轮流出现。我们用一个例子演示:

\documentclass{book}
\usepackage[a5paper,margin=1.5in]{geometry}
\usepackage[nospace]{varioref}
\usepackage{kantlipsum}
\begin{document}\chapter{Chapter one}sometext\dots\reftextvario{test01}{test02}\reftextvario{test01}{test02}\reftextvario{test01}{test02}\end{document}

编译:
在这里插入图片描述

而默认情况下,varioref是像如下这种方式定义这些索引命令的:

\newcommand\reftextfaceafter{on the \reftextvario{facing}{next} page}
\newcommand\reftextfacebefore{on the \reftextvario{facing}{preceding} page}
\newcommand\reftextafter {on the \reftextvario{following}{next} page}
\newcommand\reftextbefore{on the \reftextvario{preceding page}{page before}}
\newcommand\reftextcurrent {on \reftextvario{this}{the current} page}
\newcommand\reftextfaraway [1]{on page~\pageref{#1}}
\newcommand\reftextpagerange [2]{on pages~\pageref{#1}--\pageref{#2}}
\newcommand\reftextlabelrange[2]{\ref{#1} to~\ref{#2}}

这些命令你都可以根据自己的需求自定义它们。

有些用户可能不喜欢文本型的索引,那么我们可以将这些\reftext...命令定义为on page~\thevpagerefnum\thevpagerefnum会获取到当前索引的页码。例如:

\documentclass{book}
\usepackage[a5paper,margin=1.5in]{geometry}
\usepackage[nospace]{varioref}
\usepackage{kantlipsum}
\begin{document}\renewcommand\reftextcurrent {on page~\thevpagerefnum}
\renewcommand\reftextbefore {on page~\thevpagerefnum}\chapter{Chapter one}sometext\dots
\label{test01}\vpageref{test01}\kant[1]\vpageref{test01}\end{document}

自行编译一下,两处索引都会显示为"on page 1"。

如果你想让所有的文本型索引都不显示(被忽略,而不是变成页码),只显示那些页码索引,那么就把\reftext...命令定义成{\unskip}。例如:

\documentclass{book}
\usepackage[a5paper,margin=1.5in]{geometry}
\usepackage[nospace]{varioref}
\usepackage{kantlipsum}\begin{document}\renewcommand\reftextcurrent {\unskip}
\renewcommand\reftextbefore {\unskip}\chapter{Chapter one}sometext\dots
\label{test01}\vpageref{test01}\vpageref{test02}\kant[1]\vpageref{test01}\label{test02}\end{document}

编译完你会发现,只有一个\vpageref{test02}生成的"on the next page",其他的都被忽略了。这是因为\reftextbefore没有被重定义。

注意,这里的{\unskip}是必要的,否则会生成一段空白间距。

有些语言具有完全不同的句子结构,以至于仅调整个别的字词和短语是不够的。为解决这样的问题,varioref包还提供了四个命令,它们分别是\vrefformat\Vrefformat, \vrefrangeformat\fullrefformat。我们很少用到,这里不再详述。感兴趣的读者可以查阅包文档。

一些要小心的问题

考虑这样一种情形,如果文本型索引在换页时从中间断开,会怎么样呢?例如:

table 5 on the current

<换页>

page

这表示"表格5"在哪一页呢?varioref以索引的末尾为参考点,也就是说,这种情形下,"表格5"在"page"那一页,而不在"table 5 on the current"那一页。如果table 5在上面一页,则索引则会这样显示:

table 5 on the following<换页>page

LaTeX \LaTeX LATEX有时候会因为索引的断页产生一些错误,例如,考虑这样一种情形:

table 5 on the following<换页>page"表格5"

此时 LaTeX \LaTeX LATEX发现标签文本是错的,因为"表格5"和page在同一页,系统会将标签文本换成"table 5 on this page"。不幸的是,该文本比"table 5 on the following page"要短,情形就变成了这样:

table 5 on this page<换页>"表格5"

现在标签和索引又不在同一页了,标签文本又是错的了,而前一种却是对的。 LaTeX \LaTeX LATEX会因此进入死循环。无论使用哪种算法,都很难令人满意。出现这样的问题时,需要用户手动调整标签的索引的位置。

在编辑文档时,可以在导言区放置一个\vrefwarning命令,它可以将这类错误转换为警告,而在调用varioref包时,指定draft选项,也有同样的效果。

在导言区放置\vrefshowerrors可以让varioref包在检测到可能的循环时停止,而在调用varioref包时,指定final选项,也有同样的效果。这实际上也是默认设置。

如果你希望在文档的某些地方仅禁用错误,这些命令也可以在文档内部使用。

另外,如果你不想要我们前面演示的那种轮流切换的文本型索引,又不想重定义每个\reftext...命令,那么就可以重定义\reftextvario命令,使得它只显示第一个参数或者第二个参数(两个备用文本中的一个):

\renewcommand\reftextvario[2]{#1}
不指定nospace选项时,该包会有何表现

varioref包设计之初,它有一个特殊的行为: 它的命令会移除前面的空格,并且会增加一个自己的空格。因此,你可以就算不在\vpageref前面放置空格,包也会将索引放置合适的位置。但是这样有一个问题,如果我不想要索引前面的空格呢? 例如,我们想要将索引放在一个括号里(如(\vpageref{xxx})),多一个空格就不合适了。宏包提供了星号形式的命令来取消前面的空格,也就是说,如果我们不想在前面加一个空格,就使用\vpageref*{xxx}

但这种方法和其他包的配合不太好,因此我们总是建议指定nospace选项。如果指定了nospace选项,那么常规的索引命令(\vpageref{xxx})前面都不会自动增加空格,需要的时候,要手动添加(一般情况下都需要)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/882446.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】C++当中的复合类型——引用和指针

C当中的复合类型 最近开始系统地学习 C 的语法&#xff0c;参考的主要资料来自于 C Primer 第五版&#xff0c;对于学习过程中所遇到的较难理解的点&#xff0c;我会以blog的形式对问题和内容进行记录&#xff0c;并进行进一步地探讨。 这一部分的内容对应于参考资料 C Prime…

HTTP 请求的请求体是什么

HTTP 请求的请求体(request body)是指在 HTTP 请求中除了请求行(request line)、请求头(headers)之外的实际数据部分。请求体通常包含用于向服务器发送数据的信息,这些信息可以是表单数据、JSON 对象、XML 文档或其他任何形式的数据。 http请求一般包含的内容 HTTP(超…

spring-cloud-alibaba-nacos-config2023.0.1.*启动打印配置文件内容

**背景&#xff1a;**在开发测试过程中如果可以打印出配置文件的内容&#xff0c;方便确认配置是否准确&#xff1b;那么如何才可以打印出来呢&#xff1b; spring-cloud-alibaba-nacos-config 调整日志级别 logging:level:com.alibaba.cloud.nacos.configdata.NacosConfigD…

Linux操作系统与windows无法相互复制问题

请先看完此文在进行操作&#xff01;&#xff01;&#xff01; 对于无法复制我们逐层分析&#xff1a; 1.为什么无法复制是不是少了什么工具(open-vm-tools-destop) 上网查阅可以看到如下 2.在此之前我的虚拟机装完Ubuntu 16.04的linux系统无法进行apt update(参考一下) li…

华三服务器R4900 G5在图形界面使用PMC阵列卡(P460-B4)创建RAID,并安装系统(中文教程)

环境以用户需求安装Centos7.9&#xff0c;服务器使用9块900G硬盘&#xff0c;创建RAID1和RAID6&#xff0c;留一块作为热备盘。 使用笔记本通过HDM管理口&#xff08;&#xff09;登录 使用VGA&#xff08;&#xff09;线连接显示器和使用usb线连接键盘鼠标&#xff0c;进行窗…

Git 总结

文章目录 1、基础操作1_提交命令2_创建分支命令3_切换分支4_分支合并5_其他关键命令 2、高级操作1_查看 HEAD 指向2_分离Head3_查看提交记录的hash值4_相对引用5_撤销变更 3、移动提交记录1_整理提交记录2_交互式 rebase 4、经验之谈1_提交技巧12_提交的技巧23_Git Tags4_Git D…

五、事务和并发控制及索引和性能优化

一. 事务和并发控制是数据库管理系统中用于处理多个用户并发访问共享数据的重要机制。 下面是对事务和并发控制的详细讲解和示例说明&#xff1a;事务&#xff1a; 事务是一组数据库操作的逻辑单元&#xff0c;它要么全部执行成功&#xff0c;要么全部回滚。事务通过保证数据操…

Java中的集合(1)——List、Map和Set

Java标准库自带的java.util包提供了集合类&#xff1a;Collection&#xff0c;它是除Map外所有其他集合类的根接口。Java的java.util包中提供了以下三种类型的集合&#xff1a; List&#xff1a;一种有序列表的集合&#xff0c;例如&#xff0c;按索引排列的Student的List&…

excel判断某一列(A列)中的数据是否在另一列(B列)中

如B列如果有7个元素&#xff0c;在A列右边的空白列中&#xff0c;输入如下公式&#xff1a; COUNTIF($B$1:$B$7,A1), 其中&#xff0c;$B$1:$B$7代表A列中的所有数据即绝对范围&#xff0c;A1代表B列中的一个单元格.

Servlet(一)

一.什么是servlet Servlet 是一种实现动态页面的技术。 是一组 Tomcat 提供给程序猿的 API, 帮助程序猿简单高效的开发一个 web app。 1.回顾 动态页面 vs 静态页面 静态页面也就是内容始终固定的页面。即使 用户不同/时间不同/输入的参数不同 , 页面内容也不会发生变化。(除…

从 Microsoft 官网下载 Windows 10

方法一&#xff1a; 打开 Microsoft 官网&#xff1a; 打开开发人员工具&#xff08;按 F12 或右键点击“检查”&#xff09;。 点击“电脑模拟手机”按钮&#xff0c;即下图&#xff1a; 点击后重新加载此网页&#xff0c;即可看到下载选项。

jenkins 用ssh 启动nohup java -jar显示执行成功 但是jar包没有被启动起来 (已解决)

问题描述 使用jenkins自动部署jar包. 打包传到服务后, 停止stop.sh脚本执行成功. 并且 xx.jar 也成功停止. 但是使用jenkins执行start.sh脚本执行成功, 但是服务器上xx.jar并没有启动起来. 启动命令是 nohup java -jar **.jar --spring.cloud.bootstrap.namebootstrap-debug&…

demo_GAN

# 导入PyTorch库&#xff0c;这是一个用于深度学习的开源库 import torch # 导入PyTorch的神经网络模块&#xff08;nn&#xff09;&#xff0c;用于定义神经网络结构 import torch.nn as nn # 导入PyTorch的函数式模块&#xff08;functional&#xff09;&#xff0c;提供了一…

把其他.ui文件拿到我的工程中使用

在Qt工程中使用工程外的ui文件的方式&#xff1a;作为一个类直接使用、包含到自己的类中或继承使用 将ui文件添加到工程中&#xff0c;作为一个类以直接使用 注&#xff1a;这里指使用原本不属于该工程的ui文件第一步&#xff1a;在工程文件.pro中添加UI文件 在.proj文件中添加…

每日一题——第一百一十七题

题目&#xff1a;使用二分查找&#xff0c;查找一个数是否存在于一个升序数组中 #include <stdio.h>int binarySearch(int arr[], int length, int elem);int main() {int arr[] { 2, 3, 4, 5, 6, 7, 8, 9, 10 };int key;int length sizeof(arr) / sizeof(arr[0]);pri…

Palo Alto Networks Expedition 未授权SQL注入漏洞复现(CVE-2024-9465)

0x01 产品介绍&#xff1a; Palo Alto Networks Expedition 是一款强大的工具&#xff0c;帮助用户有效地迁移和优化网络安全策略&#xff0c;提升安全管理的效率和效果。它的自动化功能、策略分析和可视化报告使其在网络安全领域中成为一个重要的解决方案。 0x02 漏洞描述&am…

windows下安装、配置neo4j并服务化启动

第一步&#xff1a;下载Neo4j压缩包 官网下载地址&#xff1a;https://neo4j.com/download-center/ &#xff08;官网下载真的非常慢&#xff0c;而且会自己中断&#xff0c;建议从以下链接下载&#xff09; 百度网盘下载地址&#xff1a;链接&#xff1a;https://pan.baid…

FFMPEG录屏(17)--- 使用 DwmRegisterThumbnail 捕获指定窗口图像数据

使用 DwmRegisterThumbnail 捕获指定窗口图像数据 在 Windows 平台上&#xff0c;捕获指定窗口的图像数据可以通过多种方法实现&#xff0c;其中一种高效的方法是使用 [DwmRegisterThumbnail] 本文将介绍如何使用 [DwmRegisterThumbnail] 捕获窗口图像数据&#xff0c;并提供一…

Mysql中表字段VARCHAR(N)类型及长度的解释

本文将针对MySQL 中 varchar (N)类型字段的存储方式进行解释&#xff0c;主要是对字符和字节的关系的理解。 1. varchar (N) 中的 N varchar (N) 中的 N 表示字符数&#xff0c;而不是字节数。这意味着 N 表示你可以存储多少个字符。 字符数&#xff1a;指的是字符的个数&…

计算机视觉在疲劳检测中的应用

计算机视觉在疲劳检测中的应用 引言 随着科技的飞速发展&#xff0c;计算机视觉技术已经广泛应用于各个领域&#xff0c;其中疲劳检测是近年来备受关注的一个研究方向。疲劳检测旨在通过计算机视觉技术&#xff0c;实时分析个体的面部特征、动作以及生理信号等&#xff0c;判…