Latex部分容易忘的功能随记

要求在一行内写下内容,字体自动调整

\resizebox{\textwidth}{!}{test}

\resizebox{\textwidth}{!} 的含义

\resizebox{\textwidth}{!} 中:

  • \textwidth:这是一个 LaTeX 预定义的长度变量,表示当前页面文本区域的宽度。当将其作为 \resizebox 的宽度参数时,意味着要将对象调整到与页面文本区域等宽。
  • !:如前面所述,它表示高度会根据指定的宽度按比例自动调整。这样可以确保对象在调整大小后不会变形。

自动等分一行

% 等宽盒子方案 (需要eqparbox包)
\usepackage{eqparbox}
\noindent
\eqmakebox[score][c]{CET-4:550分}\hfill
\eqmakebox[score][c]{CET-6:516分}\hfill
\eqmakebox[score][c]{CSP:210分}

从左边到最右边并且提前定义

\documentclass{article}
\usepackage{eqparbox}  % 必需宏包
\usepackage{xparse}    % 更强大的命令定义

% 专业级等宽分布命令(自动处理中文字符)
\NewDocumentCommand{\scoreline}{mmm}{%
  \noindent
  \eqmakebox[score][l]{#1}\hfill
  \eqmakebox[score][c]{#2}\hfill
  \eqmakebox[score][r]{#3}%
}

\begin{document}
% 实际使用示例
\scoreline{CET-4:550分}{CET-6:516分}{CSP:210分}
\end{document}

代码逐行解释

\noindent

  • 在 LaTeX 中,段落默认是有缩进的。\noindent 命令的作用是取消当前段落的缩进,使得文本从行首开始排版。所以这行代码会让后续的内容顶格开始显示。

\eqmakebox[score][c]{CET - 4:550分}

  • \eqmakebox 命令:该命令来自 eqparbox 宏包,其主要功能是创建一个具有相同宽度的盒子。具体来说,它会根据指定的标签(这里是 score),让所有使用相同标签的 \eqmakebox 盒子具有相同的宽度,这个宽度是所有这些盒子中最宽的那个盒子的宽度。
  • [score]:这是 \eqmakebox 的第一个可选参数,它是一个标签。所有使用 [score] 标签的 \eqmakebox 盒子会被调整为相同的宽度。
  • [c]:这是 \eqmakebox 的第二个可选参数,用于指定盒子内内容的对齐方式。c 表示居中对齐,也就是让 “CET - 4:550 分” 这个内容在盒子内水平居中显示。
  • {CET - 4:550分}:这是 \eqmakebox 的必选参数,里面放置的是要显示的具体内容。

\hfill

  • \hfill 是 LaTeX 中的一个水平填充命令,它会尽可能地填充当前行剩余的水平空间。在这段代码里,它的作用是在不同的成绩信息之间添加足够的空白,使它们在一行内均匀分布。

项目 项目简介 负责内容

\usepackage{xeCJK}  % 中文字体支持
\usepackage[x11names]{xcolor}  % 专业色彩管理
\usepackage{amssymb}  % 数学符号库
\usepackage{eqparbox}  % 等宽盒子

% 定义强调色(皇家蓝)
\definecolor{AccentColor}{RGB}{65 105 225}

\newcommand{\project}[3]{%
  \noindent
  \textcolor{AccentColor}{%
    \raisebox{-0.2ex}{\Large$\checkmark$}%
    \hspace{0.5em}%
  }
  \eqmakebox[project][l]{%
    \textcolor{AccentColor}{%
      \bfseries\large #1% 项目名称
    }%
  }%
  \par\vspace{0.5ex}% 垂直间距
  \hspace*{2em}% 悬挂缩进
  \begin{minipage}{\dimexpr\textwidth-2em}% 限制宽度
    \textcolor{gray}{\footnotesize\textbf{项目简介:}}\\*
    \small #2% 简介内容

    \vspace{0.8ex}% 段落间距
    \textcolor{gray}{\footnotesize\textbf{负责工作:}}\\*
    \small #3% 工作内容
  \end{minipage}
}

与datedsubsection连用会有下面的报错…

Package hyperref Warning: Token not allowed in a PDF string (Unicode): removing `math shift' on input line 15.

在LaTeX中使用格式命令作为章节标题参数时,需通过以下方式避免hyperref警告:

% 正确写法示例
\datedsubsection{%
  \texorpdfstring{  % 关键解决命令
    \project{基于YOLO的海洋无人艇船海图像目标识别项目}% 文档显示内容
    {基于YOLO的海洋无人艇船海图像目标识别项目}% PDF书签纯文本
  }%
}{2023.07 -- 2024.04}

解决方案原理

问题根源

  • hyperref在生成PDF书签时要求纯文本

  • 原写法\project{}包含颜色/字体等格式命令

  • 格式控制符(\textcolor, \raisebox等)无法转换为PDF书签

% 配置全局颜色
\definecolor{AccentColor}{RGB}{65 105 225}  % 强调色
\definecolor{LabelGray}{RGB}{128 128 128}   % 标签灰

% 优化列表样式
\usepackage{enumitem}
\setlist[itemize]{%
  label=\textcolor{AccentColor}{\scriptsize$\bullet$},
  leftmargin=1.5em
}

\newcommand{\project}[3]{%
  \noindent
  \textcolor{AccentColor}{%
    \raisebox{-0.2ex}{\Large$\checkmark$}%
    \hspace{0.5em}%
  }
  \eqmakebox[project][l]{%
    \textcolor{AccentColor}{%
      \bfseries\large #1% 项目名称
    }%
  }%
  \par\vspace{0.5ex}% 垂直间距
  \hspace*{2em}% 悬挂缩进
  \begin{minipage}{\dimexpr\textwidth-2em}% 限制宽度
    \textcolor{gray}{\footnotesize\textbf{项目简介:}}\\*
    \small #2% 简介内容

    \vspace{0.8ex}% 段落间距
    \textcolor{gray}{\footnotesize\textbf{负责工作:}}\\*
    \small #3% 工作内容
  \end{minipage}
}

\\* 的作用

换行:和 \ 一样,\* 能实现行内的换行操作。一般在表格、列表、数学环境等当中使用,以实现内容的分行显示。
禁止分页:\* 和 \ 的关键区别在于,\* 会禁止在换行的位置进行分页。也就是说,即使当前页面剩余空间不足以容纳下一行内容,LaTeX 也不会在这里分页,而是会把内容挤到当前页面,或者通过调整排版参数来处理。

{的作用

1. 注释作用

在 LaTeX 中,% 后面的内容会被当作注释,编译时会被忽略。例如代码里的 % 项目名称 就是注释,它能帮助开发者理解代码的含义,不会对编译结果产生影响。

2. 避免多余空格

在 LaTeX 里,换行符会被当作空格处理。如果在命令定义或者宏中,换行符引入的空格可能会影响命令的执行结果或者排版效果。使用 % 可以避免这种情况。

博客跳转

\newcommand{\basicInfoItem}[2]{%
    \faIcon{#1}\ \href{#3}{\textcolor{blue}{\textit{#2}}}
}

计算机技能 标题 直接显示的链接跳转 介绍

\usepackage{xcolor}
\usepackage{hyperref}
\hypersetup{
    colorlinks = true,
    urlcolor   = blue,
    linktoc    = none
}
% 定义URL斜体样式
\renewcommand\UrlFont{\color{blue}\itshape} % 蓝色斜体

\newcommand{\projectexperience}[3]{%
    \vspace{0.5em}\noindent
    \textbf{\textsc{#1}} \hfill 
    \href{#2}{\underline{\url{#2}}} % 使用url包裹自动换行
    \vspace{0.2em}\newline
    \hangindent=2em\hangafter=1
    #3
    \par\vspace{0.5em}\normalsize
}

网址写法

  1. \itshape 使用错误\itshape 是一个声明式的命令,它用于改变当前字体为斜体,并不需要花括号包裹参数。正确的用法是直接使用该声明,后续的文本会自动应用斜体样式。而在的代码里,把文本用花括号括起来放在 \itshape 后面,这不符合其使用规范。
  2. \color 使用问题\color 同样是声明式命令,它的正确使用方式是 \color{颜色名} ,之后的文本会采用指定颜色。和 \itshape 一样,不能将文本用花括号括起来放在 \color 后面。
  3. 嵌套命令的花括号问题:虽然这里使用花括号嵌套命令本身语法上没有错误,但为了代码的清晰和可读性,应该合理使用。

解决方案

可以将代码修改为如下形式,以正确使用这些命令:

\href{https://pb.cn}{\underline{\color{blue}\itshape 你好}}

而不是

\href{https://pb.cn}{\underline{\color{blue}\itshape{你好}}} 

latex中别忘记使用转义\\

字体和行距 局部

动态计算行距(行高=字号×1.2):

\fontsize{10pt}{\dimexpr10pt*1.2}\selectfont 
这是采用1.2倍行高的示例文本(10pt字配12pt行距)。当字号变化时,行距会自动按比例调整,这种设置特别适合需要保持视觉平衡的多级标题排版。

\fontsize{14pt}{\dimexpr14pt*1.2}\selectfont 
同样采用自动行距计算方式,此时行距会根据当前字号(14pt)自动调整为16.8pt。相比固定行距,这种动态比例设置能更好适应不同层级的排版需求。

\fontsize{18pt}{\dimexpr18pt*1.2}\selectfont 
通过动态计算方式,即使字号增大到18pt,行距也会自动调整为21.6pt。这种方法在制作演示文稿或强调性内容时非常有效,既能保持文字清晰可读,又能增强视觉层次感。

几种常见的字体大小

{\tiny 最小} \\
{\small} \\
{\normalsize 正常} \\
{\large} \\
{\Huge 特大 \\

10pt 文档类

articlereportbook 等文档类中,如果使用 10pt 选项(这是默认选项),字体大小命令对应的 pt 值如下:

字体大小命令 对应 pt
\tiny 5pt
\small 9pt
\normalsize 10pt
\large 12pt
\Huge 20pt

11pt 文档类

当使用 11pt 选项时,字体大小命令对应的 pt 值如下:

字体大小命令 对应 pt
\tiny 6pt
\small 10pt
\normalsize 11pt
\large 14pt
\Huge 24pt

12pt 文档类

若使用 12pt 选项,字体大小命令对应的 pt 值如下:

字体大小命令 对应 pt
\tiny 6pt
\small 10.95pt
\normalsize 12pt
\large 17pt
\Huge 30pt

示例代码验证

可以通过以下 LaTeX 代码来验证上述对应关系:

\documentclass[10pt]{article}
\usepackage{lmodern}
\begin{document}
    {\tiny 这是 \verb|\tiny| 字体大小,理论上应为 5pt。}\\
    {\small 这是 \verb|\small| 字体大小,理论上应为 9pt。}\\
    {\normalsize 这是 \verb|\normalsize| 字体大小,理论上应为 10pt。}\\
    {\large 这是 \verb|\large| 字体大小,理论上应为 12pt。}\\
    {\Huge 这是 \verb|\Huge| 字体大小,理论上应为 20pt。}
\end{document}

可以将文档类选项分别改为 11pt12pt 来查看不同的对应关系。编译这个 LaTeX 文件后,在生成的 PDF 中可以观察到不同字体大小的实际效果。


   转载规则


《Latex部分容易忘的功能随记》 plumbum 采用 知识共享署名 4.0 国际许可协议 进行许可。
 本篇
Latex部分容易忘的功能随记 Latex部分容易忘的功能随记
要求在一行内写下内容,字体自动调整\resizebox{\textwidth}{!}{test} \resizebox{\textwidth}{!} 的含义在 \resizebox{\textwidth}{!} 中: \textwidth
2025-03-20
下一篇 
ESRGAN论文笔记 ESRGAN论文笔记
用gpt整理一下,简单复现了一下这一篇,想提取高阶退化建模部分,但是发现作者居然整合到pip的包里面,尝试了一下最简的降阶,然后用差分网络处理了一下,效果真的可以,比直接的LGFI Block的提取的效果好。摘要与核心贡献Real-ESRG
2025-03-08
  目录