ucs 和 biblatex 不兼容(mathletters 和 utf-8)

ucs 和 biblatex 不兼容(mathletters 和 utf-8)

我有一个使用 TexStudio、MikTex (x64) 和 pdflatex 用 UTF-8 字符编写的文档。全部更新并在 Window 7 SP1 x64 上运行。

然后我决定开始使用 biblatex 引用,但现在我遇到了不兼容问题。

错误是

包 biblatex 错误:不兼容的包‘ucs’。\begin{document}

以下是代码

\documentclass[]{article}
\usepackage[mathletters]{ucs} % this package seems to conflict
\usepackage[T1]{fontenc}
\usepackage[utf8x]{inputenc} % the x seems to be a problem
\usepackage[backend=bibtex]{biblatex}
\addbibresource{Library.bib}

\title{MyTitle}
\author{Me}

\begin{document}

    \maketitle

    \section{MySection}

    \paragraph{MyParagraph}
    Accènt
    λ lamba
    \cite{some_cit}

    \printbibliography

\end{document}

这是一个小例子。在我的完整文档中,我有很多希腊字母,其中一些是标题。将它们全部放入数学公式中会很麻烦。我应该怎么做?让两者共存?我应该使用另一个包来引用吗?

答案1

您可以滥用 的基础设施ucs;这里有一组技巧,可以读取您在ucs发行版中所需的文件,但在 下utf8与 兼容biblatex

\documentclass[]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\input{binhex}
\makeatletter
\def\uc@dclc#1#2#3{%
  \ifnum\pdfstrcmp{#2}{mathletters}=\z@
    \begingroup\edef\x{\endgroup
      \noexpand\DeclareUnicodeCharacter{\hex{#1}}}\x{#3}%
  \fi
}
\input{uni-3.def}
\def\uc@dclc#1#2#3{%
  \ifnum\pdfstrcmp{#2}{default}=\z@
    \begingroup\edef\x{\endgroup
      \noexpand\DeclareUnicodeCharacter{\hex{#1}}}\x{#3}%
  \fi
}
\input{uni-34.def}
\makeatother


\begin{document}
\title{MyTitle}
\author{Me}

\maketitle

\section{MySection about ∞}

Accènt λ lambda ∞ 

$λ$ lambda $∞$ 


\end{document}

在此处输入图片描述

一个不同的策略是使用unicode-math-table.tex

\documentclass[]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\makeatletter
\newcommand\UnicodeMathSymbol[4]{%
  \ifnum#1>"9F
    \expandafter\DeclareUnicodeCharacter\expandafter{\@gobble#1}{\ensuremath{#2}}%
  \fi
}
\input{unicode-math-table}
\@for\next:={% you're probably using text Greek letters
  alpha,beta,gamma,delta,epsilon,zeta,eta,theta,%
  iota,kappa,lambda,mu,nu,xi,pi,rho,sigma,tau,%
  upsilon,phi,chi,psi,omega,Gamma,Delta,Theta,%
  Lambda,Xi,Pi,Sigma,Upsilon,Phi,Psi,Omega}\do{%
    \expandafter\let\csname up\next\expandafter\endcsname\csname\next\endcsname
}

\makeatother

\begin{document}
\title{MyTitle}
\author{Me}

\maketitle

\section{MySection about ∞}

Accènt
λ lambda ∞ 

$λ$ lambda $∞$ 


\end{document}

中的条目unicode-math-table形式为

\UnicodeMathSymbol{"0221E}{\infty}{\mathord}{infinity}

所以我们将其重新映射到

\DeclareUnicodeCharacter{0221E}{\ensuremath{\infty}}

(我使用是\ensuremath因为你想要它,但我个人会避免使用它)。因为使用了希腊字母\upalpha等,所以我还将这些命令重新映射到通常的命令。

相关内容