我有一个使用 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
等,所以我还将这些命令重新映射到通常的命令。