对于特殊的 utf8 符号,数学模式和文本模式哪个更好

对于特殊的 utf8 符号,数学模式和文本模式哪个更好

pdflatex 的输入中有一些 utf8 符号 (ĉ ĝ ...),我在 preambula 命令中使用如下

\DeclareUnicodeCharacter{0109}{$\hat{c}$}, 
\DeclareUnicodeCharacter{011D}{$\hat{g}$}

以此类推,使用\hat\acute\grave\ddot\tilde\check、 (以避免出现类似: 的消息 \bar)。因此,我在数学模式下用适当的 latex 命令替换符号(utf8)。由于命令处于数学模式,因此是否会出现任何不良情况,我是否必须更改为使用文本模式命令?它有效,没有错误。我担心将来使用此序言,我会遇到麻烦吗?以下是全文的一部分:\breve
Unicode char \u8:ǹ not set up for use with LaTeX

\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{textcomp}
\usepackage{amstext}

\usepackage{cmap}       
\usepackage[T1,T2A]{fontenc}   
\usepackage[english,russian]{babel}

\usepackage{textalpha}   % Greek symbols

%Latin Accents

\DeclareUnicodeCharacter{01F4}{$\acute{G}$}

\DeclareUnicodeCharacter{01F5}{$\acute{g}$}

\DeclareUnicodeCharacter{1E30}{$\acute{K}$}
\DeclareUnicodeCharacter{1E31}{$\acute{k}$}
\DeclareUnicodeCharacter{1E3E}{$\acute{M}$}
\DeclareUnicodeCharacter{1E3F}{$\acute{m}$}
\DeclareUnicodeCharacter{1E54}{$\acute{P}$}
\DeclareUnicodeCharacter{1E55}{$\acute{p}$}
\DeclareUnicodeCharacter{1E82}{$\acute{W}$}
\DeclareUnicodeCharacter{1E83}{$\acute{w}$}


% GREEK Symbols var

\DeclareUnicodeCharacter{03B5}{$\varepsilon$}
\DeclareUnicodeCharacter{03F0}{$\varkappa$}
\DeclareUnicodeCharacter{03C6}{$\varphi$}
\DeclareUnicodeCharacter{03D6}{$\varpi$}
\DeclareUnicodeCharacter{03F1}{$\varrho$}
\DeclareUnicodeCharacter{03C2}{$\varsigma$}
\DeclareUnicodeCharacter{03D1}{$\vartheta$}

\usepackage{amsmath}

\usepackage{amssymb}

\begin{document}

==

Acute: á ć é ǵ í ḱ ĺ ḿ ń ó ṕ ŕ ś ú ẃ ý ź Á Ć É Ǵ Í Ḱ Ĺ Ḿ Ń Ó Ṕ Ŕ Ś Ú Ẃ Ý Ź   \\

α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ ς σ τ υ φ χ ψ ω Α Β Γ Δ Ε Ζ Η Θ
Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω 

var греческие буквы

varepsilon ε   
varkappa ϰ    
varphi φ     
varpi ϖ     
varrho ϱ     
varsigma ς     
vartheta ϑ    

\end{document}

答案1

您可以声明字符以用于文本或数学或两者

\DeclareUnicodeCharacter{0109}{\^c}
\DeclareUnicodeCharacter{0109}{\hat{c}}
\DeclareUnicodeCharacter{0109}{\ifmmode\hat{c}\else\^{c}\fi}
\DeclareUnicodeCharacter{0109}{\TextOrMath{\^{c}}{\hat{c}}}

但你建议的定义

\DeclareUnicodeCharacter{0109}{$\hat{c}$}

是两全其美的,它不能用于数学,因为但$如果在文本中使用,它会做错事,使用数学字体而不是文本字体。

答案2

如果你真的(!)需要用数学字符来做,你可以使用

\DeclareUnicodeCharacter{0109}{\ensuremath{\mathrm{\hat{c}}}}

\ensuremath确保您使用数学模式(无论您是否处于数学环境中)。 \mathrm切换到直立数学字体并使其与普通文本一致。

相关内容