我目前正在尝试为一些学生创建问题集,因此它涉及从多个地方复制粘贴。但是,例如,对于几何问题,当我复制 gamma 时,我得到的是“Γ”,而 Latin1 不支持它……我想留在 Latin1 中,因为它有我需要的所有重音……
问题是,当我编译时,“Γ”变成了“?”,然后我必须手动更改它……
是否有可能存在一个函数可以向 Latin1 添加符号,或者将符号从“Γ”替换为“$\Gamma$”?
我发现了这一点:
\documentclass[11pt]{article}
\usepackage[latin1]{inputenc}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\myreplace}{m}
{
\tl_set:Nn \l__maxd_argument_tl { #1 }
\tl_replace_all:Nnn \l__maxd_argument_tl { - } { . }
\tl_replace_all:Nnn \l__maxd_argument_tl { Γ } { $\Gamma$ }
\tl_use:N \l__maxd_argument_tl
}
\tl_new:N \l__maxd_argument_tl
\ExplSyntaxOff
\begin{document}
\myreplace{---}
\myreplace{Γ}
\end{document}
此代码搜索所有“-”和“Γ”,并分别用“。”和“$\Gamma$”替换它们,因此我得到了想要的“...$\Gamma$”。
但这实际上并没有搜索“Γ”并替换它们,而是搜索它所知道的“Γ”,因此是“?”......所以我的函数应该在 Latex 编译之前完成
因此,如果我想创建一个代码来替换多个未知字符,这将行不通。有人有主意吗?
答案1
尽管您inputenc
声明了,但您的输入文件不能采用 latin1 编码。我在这里假设它是 UTF-8(就像问题中发布的版本)如果是这样,您可以简单地声明字符以使用数学字体字符:
\documentclass[11pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{newunicodechar}
\newunicodechar{Γ}{\ensuremath{\Gamma}}
\begin{document}
some text with é and ü and Γ
\end{document}
答案2
有一些软件包可以更系统地执行 David Carlisle 的回答所建议的操作。特别是,alphabeta
带有支持 LGR 编码的字体的软件包将定义您想要的希腊字母宏,并允许您在文本模式和数学模式下使用希腊字母输入。所有文本模式字符都应该由 处理inputenc
。
newunicode
您可能仍希望在 PDFTeX 中使用字符表示某些数学符号,正如他的回答所暗示的那样,因为inputenc
没有设置它们。例如,要写入 ∈ℝ,您需要创建映射\newunicodechar{∈}{\ensuremath\in}
和\newunicodechar{ℝ}{\ensuremath\mathbb{R}}
。
此示例使用unicode-math
LuaLaTeX 或 XeLaTeX 运行。我强烈推荐它,除非你有使用 PDFTeX。它功能更强大,支持更多字体,并且更易于使用。
我还强烈建议您以 UTF-8 格式保存所有新的源文件。
\RequirePackage{luatex85} % Workaround for standalone 1.2 and LuaTeX.
\documentclass[preview,varwidth]{standalone}
\usepackage{iftex}
\ifPDFTeX
\usepackage[LGR,T1]{fontenc}
\usepackage{textcomp}
\usepackage[utf8]{inputenc}
\usepackage{alphabeta}
\usepackage{lmodern}
\else
\usepackage[math-style=TeX]{unicode-math}
\fi
\begin{document}
Some text with é and ü and Γ. \(α = r \sin φ \cos θ\).
\end{document}