定义了所有 UTF8 符号的 LaTeX-Font

定义了所有 UTF8 符号的 LaTeX-Font

我正在用 Java 编写一个程序,该程序使用 LaTeX 为某些内容生成 PDF。在此 PDF 中,我必须包含从文件中获取的任意 Unicode 字符。

\documentclass[11pt,a4paper]{scrartcl}

\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc} % or \usepackage[utf8x]{inputenc} for mor characters
\usepackage{eurosym}
\usepackage{textcomp}

\begin{document}

¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ® ¯ ° ± ² ³ ´ µ ¶  · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ 

le\#bla\%dd\@\euro{}i9pi\{\_\}d    dsa ddd4(ozfertig

\char"2200

\end{document}

这为我提供了许多 UTF-8 字符,但不是全部。在上面的例子中,带有 的行\char"2200不起作用,其他行都起作用。如果我能找到一种包含所有 UTF-8 符号的字体(即使它只是映射到 ?),这应该可以工作。有这样的字体吗?

如果没有,是否有一份文档列出了我正在使用的包中定义的符号范围,以便我可以用一些定义的字符替换其余的符号?

我无法使用 XeTeX 或 LuaTeX,我只能使用 pdfLaTeX。

答案1

您的意思是 Unicode 字符,而不是 UTF-8 字符。Unicode 代码点的范围是十六进制 0-10FFFF,而 pdflatex 字体限制为十六进制 0-FF,因此您需要数千种字体来覆盖整个 Unicode 范围,并且需要每个字符(或可以映射为块的字符范围)的 TeX 宏定义。

答案2

这有点像 hack。如果 Unicode 符号定义已使用编码包(例如textcomp或 选项)加载到fontenc,则\UnicodeChar{abcd}可以使用 访问它,或者?将被打印。

\documentclass[11pt,a4paper]{scrartcl}

\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{eurosym}
\usepackage{textcomp}

\makeatletter
\begingroup
  \def\DeclareUnicodeChar#1#2{\global\@namedef{UC@#1}{#2}}
  \def\cdp@elt#1#2#3#4{%
     \lowercase{\InputIfFileExists{#1enc.dfu}{}{}}%
  }\cdp@list
\endgroup
\def\UnicodeChar#1{\@ifundefined{UC@#1}{?}{\@nameuse{UC@#1}}}
\makeatother

\begin{document}

¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ® ¯ ° ± ² ³ ´ µ ¶  · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ 

le\#bla\%dd\@\euro{}i9pi\{\_\}d    dsa ddd4(ozfertig

\UnicodeChar{2200}

\end{document}

在此处输入图片描述

相关内容