Ubuntu24.04安装Latex并支持中文编译


前言

系统:Ubuntu 24.04.1
软件:TexLive 2025


一、TexLive下载

telive官网
进入texlive官网,下载texlive的ISO文件。

二、TexLive安装

1.进入Downloads文件夹,双击texlive2025.iso文件,加载至电脑.

2.进入加载后的texlive文件夹:

cd /media/ac/TexLive2025/
$ sudo perl ./install-tl --no-interaction

3.默认设置自动安装

4.安装中文字体:

sudo apt install latex-cjk-all

5.安装额外的包

sudo apt install texlive-latex-extra

三、Tex编译

1.进入vscode,在extension中安装Latex和Latex Workshop。

2.打开设置,进入Code Actions On Save选项,点击Edit in settings.json

3.在settings.json的大括号内的最后一行,添加如下内容:

    "latex-workshop.latex.autoBuild.run": "never",
    "latex-workshop.showContextMenu": true,
    "latex-workshop.intellisense.package.enabled": true,
    "latex-workshop.message.error.show": false,
    "latex-workshop.message.warning.show": false,
    "latex-workshop.latex.tools": [
        {
            "name": "xelatex",
            "command": "xelatex",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "%DOCFILE%"
            ]
        },
        {
            "name": "pdflatex",
            "command": "pdflatex",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "%DOCFILE%"
            ]
        },
        {
            "name": "latexmk",
            "command": "latexmk",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "-pdf",
                "-outdir=%OUTDIR%",
                "%DOCFILE%"
            ]
        },
        {
            "name": "bibtex",
            "command": "bibtex",
            "args": [
                "%DOCFILE%"
            ]
        }
    ],
    "latex-workshop.latex.recipes": [
        {
            "name": "XeLaTeX",
            "tools": [
                "xelatex"
            ]
        },
        {
            "name": "PDFLaTeX",
            "tools": [
                "pdflatex"
            ]
        },
        {
            "name": "BibTeX",
            "tools": [
                "bibtex"
            ]
        },
        {
            "name": "LaTeXmk",
            "tools": [
                "latexmk"
            ]
        },
        {
            "name": "xelatex -> bibtex -> xelatex*2",
            "tools": [
                "xelatex",
                "bibtex",
                "xelatex",
                "xelatex"
            ]
        },
        {
            "name": "pdflatex -> bibtex -> pdflatex*2",
            "tools": [
                "pdflatex",
                "bibtex",
                "pdflatex",
                "pdflatex"
            ]
        },
    ],
    "latex-workshop.latex.clean.fileTypes": [
        "*.aux",
        "*.bbl",
        "*.blg",
        "*.idx",
        "*.ind",
        "*.lof",
        "*.lot",
        "*.out",
        "*.toc",
        "*.acn",
        "*.acr",
        "*.alg",
        "*.glg",
        "*.glo",
        "*.gls",
        "*.ist",
        "*.fls",
        "*.log",
        "*.fdb_latexmk"
    ],
    "latex-workshop.latex.autoClean.run": "onFailed",
    "latex-workshop.latex.recipe.default": "lastUsed",
    "latex-workshop.view.pdf.internal.synctex.keybinding": "double-click"

4.新建一个test.tex文件,在其中输入如下内容:

% \PassOptionsToPackage{quiet}{fontspec} # 解决fondol编译警告
\documentclass[lang=cn,newtx,10pt,scheme=chinese,UTF8,fontset=windows]{elegantbook}

\title{ElegantBook:优美的 \LaTeX{} 书籍模板}
\subtitle{Elegant\LaTeX{} 经典之作}

\author{Ethan Deng \& Liam Huang \& syvshc \& sikouhjw \& Osbert Wang}
\institute{Elegant\LaTeX{} Program}
\date{2022/12/31}
\version{4.5}
\bioinfo{自定义}{信息}

\extrainfo{注意:本模板自 2023 年 1 月 1 日开始,不再更新和维护!}

\setcounter{tocdepth}{3}

\logo{logo-blue.png}
\cover{cover.jpg}

% 本文档命令
\usepackage{array}
\newcommand{\ccr}[1]{\makecell{
  
  {\color{#1}\rule{1cm}{1cm}}}}

% 修改标题页的橙色带
\definecolor{customcolor}{RGB}{32,178,170}
\colorlet{coverlinecolor}{customcolor}
\usepackage{cprotect}

\addbibresource[location=local]{reference.bib} % 参考文献,不要删除

\begin{document}

\maketitle
\frontmatter

\tableofcontents

\mainmatter

\chapter{Elegant\LaTeX{} 系列模板介绍}

\begin{quotation}
  \textbf{\textcolor{red}{本模板自 2023 年 1 月 1 日开始,不再维护,不建议使用本系列模板!为了保证之前版本的用户仍然能查到说明文档,本说明文档仍然保留过去的信息。}}
\end{quotation}

Elegant\LaTeX{} 项目组致力于打造一系列美观、优雅、简便的模板方便用户使用。目前由 \href{https://github.com/ElegantLaTeX/ElegantNote}{ElegantNote},\href{https://github.com/ElegantLaTeX/ElegantBook}{ElegantBook},\href{https://github.com/ElegantLaTeX/ElegantPaper}{ElegantPaper} 组成,分别用于排版笔记,书籍和工作论文。大版本改动较大,请关注版本信息,在未开始使用模板前,建议直接选择最新正式版本!


本文将介绍本模板的一些设置内容以及基本使用方法。如果您有其他问题,建议或者意见,欢迎在 GitHub 上给我们提交 \href{https://github.com/ElegantLaTeX/ElegantBook/issues}{issues} 或者邮件联系我们。我们的联系方式如下,建议加入用户 QQ 群提问,这样能更快获得准确的反馈,加群时请备注 \LaTeX{} 或者 Elegant\LaTeX{} 相关内容。
\begin{itemize}
  \item 官网:\href{https://elegantlatex.org/}{https://elegantlatex.org/}
  \item GitHub 地址:\href{https://github.com/ElegantLaTeX/}{https://github.com/ElegantLaTeX/}
  \item CTAN 地址:\href{https://ctan.org/pkg/elegantbook}{https://ctan.org/pkg/elegantbook}
  \item 下载地址:\href{https://github.com/ElegantLaTeX/ElegantBook/releases}{正式发行版},\href{https://github.com/ElegantLaTeX/ElegantBook/archive/master.zip}{最新版}
  \item Bilibili:\href{https://space.bilibili.com/516479629}{ElegantLaTeX}
  \item 用户 QQ 群:692108391
\end{itemize}


\section{模板安装与更新}

你可以通过免安装的方式使用本模板,包括在线使用和本地(文件夹内)使用两种方式,也可以通过 \TeX{} 发行版安装使用。

\subsection{在线使用模板}

我们把三套模板全部上传到 \href{https://www.overleaf.com/}{Overleaf} 上了,网络便利的用户可以直接通过 Overleaf 在线使用我们的模板。使用 Overleaf 的好处是无需安装 \TeX{} Live,可以随时随地访问自己的文件。查找模板,请在 Overleaf 模板库里面搜索 \lstinline{elegantlatex} 即可,你也可以直接访问\href{https://www.overleaf.com/latex/templates?addsearch=elegantlatex}{搜索结果}。选择适当的模板之后,将其 \lstinline{Open as Template},即可把模板存到自己账户下,然后可以自由编辑以及与别人一起协作。更多关于 Overleaf 的介绍和使用,请参考 Overleaf 的\href{https://www.overleaf.com/learn}{官方文档}。

\subsection{本地免安装使用}

\textbf{免安装}使用方法如下:从 GitHub 或者 CTAN 下载最新版,严格意义上只需要类文件 \lstinline{elegantbook.cls}。然后将模板文件放在你的工作目录下即可使用。这样使用的好处是,无需安装,简便;缺点是,当模板更新之后,你需要手动替换 \lstinline{cls} 文件。

\subsection{发行版安装与更新}

本模板测试环境为 
\begin{enumerate}
  \item Win10 + \TeX{} Live 2022;
  \item Ubuntu 20.04 + \TeX{} Live 2022;
  \item macOS Monterey + Mac\TeX{} 2022。
\end{enumerate}

\TeX Live/Mac\TeX{} 的安装请参考啸行的\href{https://github.com/OsbertWang/install-latex-guide-zh-cn/releases/}{一份简短的关于安装 \LaTeX{} 安装的介绍}。

安装 \TeX{} Live 之后,安装后建议升级全部宏包,升级方法:使用 cmd 或 terminal 运行 \lstinline{tlmgr update --all},如果 tlmgr 需要更新,请使用 cmd 运行 \lstinline{tlmgr update --self},如果更新过程中出现了中断,请改用 \lstinline{tlmgr update --self --all --reinstall-forcibly-removed} 更新,也即

\begin{lstlisting}
tlmgr update --self 
tlmgr update --all
tlmgr update --self --all --reinstall-forcibly-removed
\end{lstlisting}

更多的内容请参考 \href{https://tex.stackexchange.com/questions/55437/how-do-i-update-my-tex-distribution}{How do I update my \TeX{} distribution?}

\subsection{其他发行版本}

由于宏包版本问题,本模板不支持 C\TeX{} 套装,请务必安装 TeX Live/Mac\TeX{}。更多关于 \TeX{} Live 的安装使用以及 C\TeX{} 与 \TeX{} Live 的兼容、系统路径问题,请参考官方文档以及啸行的\href{https://github.com/OsbertWang/install-latex-guide-zh-cn/releases/}{一份简短的关于安装 \LaTeX{} 安装的介绍}。



\chapter{ElegantBook 设置说明}

本模板基于基础的 book 文类,所以 book 的选项对于本模板也是有效的(纸张无效,因为模板有设备选项)。默认编码为 UTF-8,推荐使用 \TeX{} Live 编译。

\section{语言模式}
本模板内含两套基础语言环境 \lstinline{lang=cn}、\lstinline{lang=en}。改变语言环境会改变图表标题的引导词(图,表),文章结构词(比如目录,参考文献等),以及定理环境中的引导词(比如定理,引理等)。不同语言模式的启用如下:
\begin{lstlisting}
\documentclass[cn]{elegantbook} 
\documentclass[lang=cn]{elegantbook}
\end{lstlisting}

除模板自带的两套语言设定之外,由\textbf{网友}提供的其他语言环境设置如下:
\begin{itemize}
  \item 由 \href{https://github.com/VincentMVV}{VincentMVV} 提供的意大利语翻译 \lstinline{lang=it},相关讨论见 \href{https://github.com/ElegantLaTeX/ElegantBook/issues/85}{Italian translation};
  \item 由 \href{https://github.com/abfek66}{abfek66} 提供的法语翻译 \lstinline{lang=fr},相关讨论见 \href{https://github.com/ElegantLaTeX/ElegantBook/issues/85}{Italian translation};
  % \item 由 \href{https://github.com/stultus}{stultus} 提供的马拉雅拉姆语翻译 \lstinline{lang=},相关讨论见 \href{https://github.com/ElegantLaTeX/ElegantBook/issues/90}{Malayalam translation};
  \item 由 \href{https://github.com/inktvis75}{inktvis75} 提供的荷兰语翻译 \lstinline{lang=nl},相关讨论见 \href{https://github.com/ElegantLaTeX/ElegantBook/issues/108}{Dutch Translation};
  \item 由 \href{https://github.com/palkotamas}{palkotamas} 提供的匈牙利语翻译 \lstinline{lang=hu},相关讨论见 \href{https://github.com/ElegantLaTeX/ElegantBook/issues/111}{Hungarian translation};
  \item 由 Lisa 提供的德语翻译 \lst
<think>好的,我现在要解释Scala函数`goodTriplets`的实现逻辑,包括BIT(二进制索引树)的使用、数组操作和计算过程。首先,我需要理解这个函数的目标是什么。可能题目中的“goodTriplets”指的是满足某种条件的三元组,比如数组中的三个元素满足特定顺序或数值条件。 接下来,用户提到了BIT,也就是二进制索引树,或者树状数组。这是一种高效处理前缀和查询和更新的数据结构,通常用于解决统计问题,比如计算数组中某个位置之前小于当前元素的个数。这种情况下,BIT可以帮助快速计算符合条件的元素数量,从而优化时间复杂度。 然后,我需要考虑数组操作部分。Scala中的数组操作可能涉及转换、映射、过滤等。根据引用[2]中的例子,Scala的`map`函数可以对集合中的每个元素应用一个函数,这可能用于处理数组中的每个元素来生成需要的数据结构。 接下来,具体到`goodTriplets`的实现,可能步骤如下: 1. **预处理数组**:可能需要对数组进行排序或者坐标压缩(离散化),以便在BIT中高效处理。例如,将元素映射到其排名,减少数值范围。 2. **使用BIT统计**:对于每个元素,统计其左侧和右侧满足条件的元素数量。例如,对于每个元素`nums(i)`,左侧比它小的元素数目可以用BIT查询,右侧比它大的数目同样可以用BIT或其他方法。 3. **组合计算结果**:根据左侧和右侧的统计数目,计算符合条件的三元组数目。例如,对于中间元素,左侧有`left`个较小元素,右侧有`right`个较大元素,那么该中间元素可以形成`left * right`个三元组。 4. **BIT的更新和查询**:在遍历数组时,需要不断更新BIT以记录已处理的元素,从而在后续查询中快速得到结果。 需要验证这些步骤是否合理。例如,对于三元组`(i, j, k)`,可能需要满足`i < j < k`且`nums[i] < nums[j] < nums[k]`,这种情况下,对每个中间元素j,统计左边比它小的元素数left和右边比它大的元素数right,乘积即为以j为中心的三元组数目。总数目即累加所有j的left*right。 关于BIT的使用,通常在处理这类问题时,会先离散化数组元素,因为BIT的有效索引需要是连续的整数。例如,将原数组元素映射到其排序后的位置,这样索引范围可控。例如,原数组是[5,2,6,1],离散化后可能变为[3,2,4,1],这样每个元素的排名作为BIT的索引。 在代码实现中,可能先对原数组进行排序,然后使用二分查找或映射表来获得每个元素的排名。然后在两次遍历中,一次从左到右统计每个元素左侧比它小的数目,另一次从右到左统计右侧比它大的数目,两次都使用BIT来高效处理。 需要注意的是,BIT的更新和查询操作的时间复杂度都是O(log n),整个算法的时间复杂度为O(n log n),这比暴力法的O(n^3)高效很多。 结合引用[1]提到的Scala数组处理,可能在实现中会涉及到数组的转换和操作,比如创建辅助数组存储离散化后的值,或者使用集合的高阶函数来处理数据。 总结实现逻辑: 1. 离散化原数组,将元素转换为排名,减少数值范围。 2. 初始化两个BIT,分别用于左侧和右侧统计。 3. 从左到右遍历数组,查询当前元素左侧比它小的数目,更新BIT。 4. 从右到左遍历数组,查询当前元素右侧比它大的数目,更新另一个BIT。 5. 对每个元素,将左侧数目乘以右侧数目,累加得到总数。 这样,BIT的使用优化了统计过程,使得整体效率更高。同时,Scala的数组操作和函数式编程特性可能被用来简化代码,比如使用`map`函数处理离散化,或者用递归进行BIT操作,但根据引用[2],可能更倾向于使用迭代方式处理BIT的更新和查询。</think>### Scala函数`goodTriplets`的实现逻辑分析 #### 功能目标 `goodTriplets`函数的目标是**统计数组中满足条件的三元组数量**,例如满足$i < j < k$且$nums[i] < nums[j] < nums[k]$的三元组。这类问题通常使用BIT(树状数组)优化时间复杂度[^1]。 --- #### 实现步骤 1. **离散化数组(坐标压缩)** 将原数组元素映射到其排序后的排名,减少数值范围。例如数组$[5,2,6,1]$离散化为$[3,2,4,1]$,以便BIT索引高效操作。 2. **初始化BIT结构** 创建两个BIT实例: - `leftBIT`:记录左侧元素的出现情况。 - `rightBIT`:记录右侧元素的出现情况。 3. **遍历统计左侧较小元素数** 从左到右遍历数组,对每个元素$nums[j]$: - 查询`leftBIT`中$[1, rank[j]-1]$区间的和,即左侧比$nums[j]$小的元素数量$left[j]$。 - 更新`leftBIT`,将$rank[j]$位置的计数+1。 4. **遍历统计右侧较大元素数** 从右到左遍历数组,对每个元素$nums[j]$: - 查询`rightBIT`中$[rank[j]+1, maxRank]$区间的和,即右侧比$nums[j]$大的元素数量$right[j]$。 - 更新`rightBIT`,将$rank[j]$位置的计数+1。 5. **计算结果** 对所有$j$,累加$left[j] \times right[j]$,即得到符合条件的三元组总数。 --- #### BIT的作用 - **高效前缀和查询**:BIT支持$O(\log n)$时间复杂度的区间和查询,用于统计左侧/右侧符合条件的元素数量。 - **动态更新**:遍历过程中实时更新元素出现次数,确保统计结果准确。 --- #### 代码示例(简化版) ```scala def goodTriplets(nums: Array[Int]): Long = { // 离散化数组 val sorted = nums.distinct.sorted val rank = nums.map(x => java.util.Arrays.binarySearch(sorted, x) + 1) // 初始化BIT val maxRank = rank.max val leftBIT = new BIT(maxRank) val rightBIT = new BIT(maxRank) // 统计右侧较大元素数 for (r <- rank.reverse) { rightBIT.update(r, 1) } var result = 0L for (r <- rank) { rightBIT.update(r, -1) // 移除当前元素(避免重复计数) val leftCount = leftBIT.query(r - 1) val rightCount = rightBIT.query(maxRank) - rightBIT.query(r) result += leftCount * rightCount leftBIT.update(r, 1) } result } // BIT实现类(部分代码) class BIT(size: Int) { private val tree = Array.fill(size + 1)(0) def update(index: Int, delta: Int): Unit = { /* 更新逻辑 */ } def query(index: Int): Int = { /* 查询前缀和 */ } } ``` --- #### 关键操作解释 1. **离散化**:通过排序和二分查找将元素映射到连续整数,减少BIT的索引范围。 2. **BIT更新**:`update`操作在遍历时记录元素的出现次数。 3. **查询区间和**:`query`操作获取前缀和,用于计算左侧/右侧符合条件的元素数量。 --- 相关问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值