Minion Pro 字体不支持^^^^0301
重音。因此,为了在西里尔字母上方获得重音,我使用accentbx
包。但不幸的是,如果包含在\parbox{}
梅威瑟:
\documentclass{article}
\usepackage{fontspec,xunicode,xltxtra}
\usepackage[T2A]{fontenc}
\setmainfont[Mapping=tex-text]{Minion Pro}
\newfontfamily\cyrillicfont[Mapping=tex-text]{Minion Pro}
\usepackage{polyglossia}
\setdefaultlanguage{russian}
\usepackage{accentbx}
\def\'#1{\upaccent{\aboxshift[.9ex]{^^^^00b4}}{#1}}
\begin{document}
акц\'ент
\textit{акц\'ент}
\textbf{акц\'ент}
{\uppercase{
акц\'ент
\textit{акц\'ент}
\textbf{акц\'ент}}}
\parbox{3 cm}{акц\'ент е^^^^00b4 \upaccent{\aboxshift[.9ex]{^^^^00b4}}{е}}
\end{document}
我该如何修复它?
更新:这很奇怪,但是
\def\"#1{\upaccent{\aboxshift[.9ex]{^^^^00b4}}{#1}}
...
\parbox{3 cm}{акц\"ент}
工作正常。
为什么\'和\"之间会有这么大的区别?
答案1
您不应该使用\def
来定义您的 accent 命令——这会破坏其他编码的定义。此外,您不应该在 fontspec 之后加载 fontenc,因为这会更改默认编码。我会\'
像这样重新定义(我没有您的 accentbx 包,因此我使用它\fbox
作为示例):
\documentclass{article}
\usepackage{fontspec}
\setmainfont[Mapping=tex-text]{Minion Pro}
\newfontfamily\cyrillicfont[Mapping=tex-text]{Minion Pro}
\usepackage{polyglossia}
\setdefaultlanguage{russian}
\DeclareTextCommand{\'}{\UTFencname}[1]
{\fbox{#1}}
\begin{document}
акц\'ент
\textit{акц\'ент}
\textbf{акц\'ент}
{\uppercase{
акц\'ент
\textit{акц\'ент}
\textbf{акц\'ент}}}
\parbox{3 cm}{акц\'ент}
\end{document}
答案2
由于被制表环境所超载,Latex 有一个\'
已知的已保存版本,\@acci
该版本已在 parboxes 和类似位置恢复。
因此,在重新定义重音后,重新定义保存的副本
\makeatletter
\let\@acci\'
\makeatother