【问题标题】:Font scaling, variables, calculations in LaTeXLaTeX 中的字体缩放、变量、计算
【发布时间】:2021-10-02 14:51:00
【问题描述】:

我目前正在撰写简历,但空间不足。我希望更改整个简历模板中的字体,但我想按比例进行。例如,有些标题是 12pt,副标题是 11pt。我希望能够将它们更改为 0.9 * 12 pt、0.9 * 11 pt,也就是相应地缩放它们。我要改变

\fontsize{12pt}{1em}

\fontsize{(0.9 * 12)pt}{1em}

,其中 \fontsize 是来自 anyfontsize 包的命令。

但我最终得到了奇怪的结果和大量的日志/错误。有没有办法确保 '*' 会产生一个数字,就像在“常规”编程语言中一样?

我尝试过的其他事情包括:

\newcommand{\myfont}[2]{\fontsize{0.9*#1pt}{0.9*#2}em}
\myfont{12}{1}

但它并没有像我期望的那样工作。我还尝试添加括号 () 并创建一个新命令\newcommand{\mymultiply}[2]{#1*#2}

有没有一种优雅而简洁的方法来做到这一点?在 LaTeX 中是否有一种“常规”的方式来进行实际计算,还是我应该避免这种方法?提前致谢!

【问题讨论】:

  • 常规的 LaTeX 方式不是使用硬编码的字体大小,而是使用诸如 \small\Large 等字体命令。如果您决定想要字体更小或更大,您可以更改参数文档类的,例如\documentclass[10pt]{article} 而不是 \documentclass[11pt]{article},所有字体都会自动缩放。
  • 也就是说,你需要小心混合字体依赖和独立单元。 pt 与字体无关,em 取决于字体,用相同的因子缩放它们会造成混乱。

标签: latex tex latex-environment overleaf


【解决方案1】:

3 种可能的方法:

  • 我会完全避免使用硬编码的字体大小。如果您改为使用 \smaller\larger 之类的字体命令,您只需使用 10pt12pt 等文档类选项更改整体大小,文档中的所有字体都会缩放,包括部分等。

  • 如果您将基本字体大小存储在一个长度中,您可以使用\dimexpr 进行计算

  • 如果出于某种原因不想创建新长度,则使用 expl3 命令进行计算


\documentclass[
%10pt
12pt
]{article}  

\usepackage{anyfontsize}

\ExplSyntaxOn
  \cs_new_eq:NN \fpeval \fp_eval:n
\ExplSyntaxOff

\begin{document}  

\section{section}

section

\newlength{\foo}
\setlength{\foo}{12pt}
\fontsize{\dimexpr.9\foo\relax}{\dimexpr1.08\foo \relax}\selectfont

test

\fontsize{\dimexpr\fpeval{.9*12}pt\relax}{\dimexpr\fpeval{.9*1.2*12}pt\relax}\selectfont

test

\end{document}

【讨论】:

    猜你喜欢
    • 2018-12-17
    • 2013-05-08
    • 2019-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-08
    • 2011-04-26
    • 2018-09-04
    相关资源
    最近更新 更多