![如何创建以反斜杠为前导的西里尔字符的别名?](https://linux22.com/image/409625/%E5%A6%82%E4%BD%95%E5%88%9B%E5%BB%BA%E4%BB%A5%E5%8F%8D%E6%96%9C%E6%9D%A0%E4%B8%BA%E5%89%8D%E5%AF%BC%E7%9A%84%E8%A5%BF%E9%87%8C%E5%B0%94%E5%AD%97%E7%AC%A6%E7%9A%84%E5%88%AB%E5%90%8D%EF%BC%9F.png)
RUN: xelatex book.tex
\documentclass[a5paper,12pt]{book}
\usepackage[X2,T2A,OT2]{fontenc}
\usepackage[english,russian]{babel}
\usepackage{marvosym}
\usepackage{fontspec}
\usepackage{xunicode,xltxtra,url,parskip}
\usepackage[usenames,dvipsnames]{xcolor}
\usepackage{supertabular}
\usepackage{titlesec}
\newpagestyle{mystyle}{\setfoot[\thepage][][]{}{}{\thepage}}
\pagestyle{mystyle}
% \defaultfontfeatures{Mapping=tex-text}
% \setmainfont{OldStandard}[
% Extension=.otf,
% UprightFont=*-Regular,
% ItalicFont=*-Italic,
% BoldItalicFont =*-BoldItalic,
% BoldFont=*-Bold
% ]
\newcommand{\И}{{\fontencoding{X2}\selectfont\CYRII}} % І
\newcommand{\и}{{\fontencoding{X2}\selectfont\cyrii}} % і
\newcommand{\Е}{{\fontencoding{X2}\selectfont\CYRYAT}} % Ѣ
\newcommand{\е}{{\fontencoding{X2}\selectfont\cyryat}} % ѣ
\newcommand{\Ф}{{\fontencoding{X2}\selectfont\CYROTLD}} % Ө
\newcommand{\ф}{{\fontencoding{X2}\selectfont\cyrotld}} % ө
\newcommand{\Ы}{{\fontencoding{X2}\selectfont\CYRIZH}} % Ѵ
\newcommand{\ы}{{\fontencoding{X2}\selectfont\cyrizh}} % ѵ
\usepackage[absolute]{textpos}
\begin{document}
\И \и \Е \е \Ф \ф \Ы \ы % IT WORKS with trailing space!
Нар\еч\ие % Нарѣчіе, ERROR: Undefined control sequence.
\end{document}
为什么别名\И
\и
, 等在没有尾随空格的情况下不起作用?是否可以创建此类别名?
答案1
你正在寻找并发症。这是一个工作版本,假如您使用具有所需字形的字体。
\documentclass[a5paper,12pt]{book}
\usepackage[english,russian]{babel}
\usepackage{fontspec}
\setmainfont{OldStandard}[
Extension=.otf,
UprightFont=*-Regular,
ItalicFont=*-Italic,
BoldItalicFont =*-BoldItalic,
BoldFont=*-Bold
]
\begin{document}
И и Е е Ф ф Ы ы
Наречие
Нарѣчіе
\end{document}
可以使用该包fontenc
,但在非常特殊的情况下。不要加载xunicode
也不xltxtra
。
如果你无法轻松输入古文字,你可以这样做
\newcommand{\И}{І}
但后面\И
应该有一个空格,除非你更改了类别代码И
(这可能很危险)。如果你喜欢大胆一点,
\newcommand{\И}{І} \catcode`И=12
(其他角色也类似)可能会这么做。
我更喜欢另一种方法,即定义\?
查找以下字符并采取适当操作。该列表可轻松扩展到其他组合。
\documentclass[a5paper,12pt]{book}
\usepackage[english,russian]{babel}
\usepackage{fontspec}
\setmainfont{OldStandard}[
Extension=.otf,
UprightFont=*-Regular,
ItalicFont=*-Italic,
BoldItalicFont =*-BoldItalic,
BoldFont=*-Bold
]
\ExplSyntaxOn
\NewDocumentCommand{\?}{m}
{
\str_case:nnF { #1 }
{
{И}{І} {и}{і}
{Е}{Ѣ} {е}{ѣ}
{Ф}{Ѳ} {ф}{ѳ}
{Ы}{Ѵ} {ы}{ѵ}
}
{??}
}
\ExplSyntaxOff
\begin{document}
\?И\?и\?Е\?е\?Ф\?ф\?Ы\?ы
Наречие
Нарѣчіе
Нар\?еч\?ие
\end{document}