由于各种原因,我只能使用 (dvi)latex 和 inputencoding latin1。我仍然想输入 unicode 代码点(我已经准备好十六进制/十进制数字了)。
我见过https://tex.stackexchange.com/a/32514/24158但这对我来说似乎不起作用:
\documentclass{article}
\usepackage[latin1]{inputenc}
\begin{document}
\symbol{324}
\end{document}
我刚得到一些! Bad character code (324).
。
答案1
\symbol{324}
只能取 8 位范围内的值,并且直接引用底层字体,而不经过 Latex 的编码机制。
任何受支持的符号\usepackage[utf8]{inputenc}
都会有一个从 Unicode 编号到基本分布中的 utf8 文件中的 TeX 定义的映射,或者你可以直接编写一些代码。所以 Unicode 324 就是LATIN SMALL LETTER N WITH ACUTE
你可以使用的,它对应于基本 latex 分布中\'{n}
的这一行utf8enc.dfu
\DeclareUnicodeCharacter{0144}{\@tabacckludge'n}
十进制 324 等于十六进制 144
如果您不想查找文件中的定义,您可以使用删除 utf8 解码部分的本地定义来加载文件:
\documentclass{article}
\usepackage[latin1]{inputenc}
\def\DeclareUnicodeCharacter#1#2{%
\expandafter\def\csname ut-#1\endcsname{#2}}
\def\UseUnicodeCharacter#1{\csname ut-#1\endcsname}
\makeatletter\input{utf8enc.dfu}\makeatother
\begin{document}
aaaa\UseUnicodeCharacter{0144}bbb
\end{document}
生产
答案2
输入相关文件,例如t1enc.dfu
T1 编码中可获得的字符。只需为 指定一个合适的定义即可\DeclareUnicodeCharacter
。
\documentclass{article}
\usepackage[T2A,T1]{fontenc}
\usepackage[latin1]{inputenc}
\newcommand{\loadencoding}[1]{%
\begingroup
\def\DeclareUnicodeCharacter##1##2{%
\expandafter\gdef\csname uni\number"##1\endcsname
{{\fontencoding{#1}\selectfont##2}}}
\makeatletter
\lowercase{\input{#1enc.dfu}}%
\endgroup}
\newcommand\unisymbol[1]{\csname uni\number#1\endcsname}
\loadencoding{T1}
\loadencoding{T2A}
\begin{document}
\unisymbol{324} \unisymbol{"0144} \unisymbol{"0428}
\end{document}
这将打印
ń ń Ш