我想用两种或多种“拼写”排版相同的拉丁文本。
我的来源是现代化的拼写(区分 i/j、u/v),我想以有和没有这种区别的方式显示它。
因为我想继续使用 (pdf)LaTeX,所以我想到通过修改 lccodes 和 uccodes 来破解 \lowercase 宏。
这是一个工作示例,主要完成我想要的功能:
\documentclass{article}
\newcommand{\translit}[1]{\begingroup
\lccode`\A=`\A
\lccode`\B=`\B
\lccode`\C=`\C
\lccode`\D=`\D
\lccode`\E=`\E
\lccode`\F=`\F
\lccode`\G=`\G
\lccode`\H=`\H
\lccode`\K=`\K
\lccode`\L=`\L
\lccode`\M=`\M
\lccode`\N=`\N
\lccode`\O=`\O
\lccode`\P=`\P
\lccode`\Q=`\Q
\lccode`\R=`\R
\lccode`\S=`\S
\lccode`\T=`\T
\lccode`\W=`\W
\lccode`\X=`\X
\lccode`\Y=`\Y
\lccode`\Z=`\Z
\lccode`\I=`\I
\lccode`\J=`\I
\lccode`\U=`\V
\lccode`\V=`\V
\lccode`\v=`\u
\lccode`\j=`\i
\uccode`\u=`\V
\uccode`\j=`\I
\lowercase{#1}
\endgroup}
\begin{document}
\lowercase{Vero. Ubi et Orbi. Nuper Quidem cum iam te adventare arbitraremur. ut queant laxis.}\par
\translit{Vero. Ubi et Orbi. Nuper Quidem cum iam te adventare arbitraremur. ut queant laxis.}\par
% checks that the modification is local
\lowercase{Vero. Ubi et Orbi. Nuper Quidem cum iam te adventare arbitraremur. ut queant laxis.}\par
\bigskip
Original version\par
{ Arma virumque cano, Troiae qui primus ab oris
Italiam, fato profugus, Laviniaque venit
litora, multum ille et terris iactatus et alto
vi superum saevae memorem Iunonis ob iram;
multa quoque et bello passus, dum conderet urbem,
inferretque deos Latio, genus unde Latinum}
\medskip
Modified version\par
\translit{ Arma virumque cano, Troiae qui primus ab oris
Italiam, fato profugus, Laviniaque venit
litora, multum ille et terris iactatus et alto
vi superum saevae memorem Iunonis ob iram;
multa quoque et bello passus, dum conderet urbem,
inferretque deos Latio, genus unde Latinum}
\end{document}
我的问题是:
在 LaTeX 中有没有更合理的方法可以做到这一点(我现在宁愿不使用 XeTeX 或 ConTeXt)(无需本地更改代码)?
我还考虑过构建拉丁巴别塔的方言,因为中世纪的设置不会这样做:它旨在改变标题和标题的大写规则。进行这种开发有几个好处(我需要对连字、连字符、印刷规则进行自定义操作),但现在对我来说似乎有点复杂,而且肯定需要软件包维护人员的大量帮助(我现在知道他们在 TeX.SE 上很活跃)。
此技巧无法实现但我希望实现的一些功能:
特殊对待单词的首字母。在某些古老的印刷传统中,如果小写 u/v 是单词的首字母,则输入 v,如果在单词内部,则输入 u。我认为这可能使用法语 Babel 语言文件中用于印刷惯例的相同机制来实现:使某些字符处于活动状态等。
不要扰乱修饰词的连字模式
尽管它适用于内联文本,但它也适用于存储在定义中的文本。
答案1
一种方法是使用一个虚拟字体,对 u 和 v 使用相同的字形(并且可选地将单词的开头与 v 连在一起(放置在字体中的其他位置),但你必须对每个字体都这样做,所以可能不方便