我是 LaTeX 的狂热初学者,我的拉丁研究工作需要一些扭曲的符号来标记元音的长度。我很想找到一种方法,让长度显示在同一水平上。如果你知道这样做的方法,请告诉我。
这是我目前能够做到的最小工作示例。还行,但并不完美:长度标记不在同一“水平”。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{color}
%custom command : shortcut for formating
\newcommand{\gr}[1]{{\bf \color{red}#1}}
\newcommand{\ro}[1]{{\color{red}#1}}
\newcommand{\g}[1]{{\bf #1}}
\title{Latin' s Scansion}
\begin{document}
\maketitle
\begin{tabular}{rlll}
734 & \ro{h\={a}s} \g{\={i}n}\ro{t\={e}r} / \g{p\={e}s}\ro{t\={e}s} // \g{d\= {u}}\ro{r\={o}} /// \g{C\u{a}}t\u{o} \gr{m\={i}}l\u{i}t\u{e} \gr{s\={i}c}cum & SSSD & hhhh \\
\end{tabular}
\end{document}
我可以使用此工具轻松地完成我想要的操作并导入到 MS Word 中: http://www.lexilogos.com/clavier/latin.htm
但是使用 LaTeX 时它不起作用......
谢谢 Evelyne
答案1
降低持续时间标记i
这一页“lexilogos”删除 的点i
。这可以通过使用\i
而不是 来实现i
:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{color}
%custom command : shortcut for formating
\newcommand{\gr}[1]{{\bfseries \color{red}#1}}
\newcommand{\ro}[1]{{\color{red}#1}}
\newcommand{\g}[1]{{\bfseries #1}}
\begin{document}
\begin{tabular}{rlll}
734 & \ro{h\={a}s} \g{\={\i}n}\ro{t\={e}r} / \g{p\={e}s}\ro{t\={e}s} //
\g{d\= {u}}\ro{r\={o}} /// \g{C\u{a}}t\u{o} \gr{m\={\i}}l\u{\i}t\u{e}
\gr{s\={\i}c}cum & SSSD & hhhh \\
\end{tabular}
\end{document}
\={i}
通过重新定义和可以实现同样的效果\u{i}
:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{color}
%custom command : shortcut for formating
\newcommand{\gr}[1]{{\bfseries \color{red}#1}}
\newcommand{\ro}[1]{{\color{red}#1}}
\newcommand{\g}[1]{{\bfseries #1}}
\DeclareTextCompositeCommand{\=}{OT1}{i}{\=\i}
\DeclareTextCompositeCommand{\u}{OT1}{i}{\u\i}
\begin{document}
\begin{tabular}{rlll}
734 & \ro{h\={a}s} \g{\={i}n}\ro{t\={e}r} / \g{p\={e}s}\ro{t\={e}s} //
\g{d\= {u}}\ro{r\={o}} /// \g{C\u{a}}t\u{o} \gr{m\={i}}l\u{i}t\u{e}
\gr{s\={i}c}cum & SSSD & hhhh \\
\end{tabular}
\end{document}
将持续时间标记提高到相同水平
其他元音的音长标记也可以凸起。定义稍微复杂一些,因为音长标记的位置是经过测量的,与格值进行比较,i
并凸起到相同的高度。
该示例还显示了如何去除持续时间标记的粗体以获得更统一的持续时间标记外观。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{color}
%custom command : shortcut for formating
\newcommand{\gr}[1]{{\bfseries \color{red}#1}}
\newcommand{\ro}[1]{{\color{red}#1}}
\newcommand{\g}[1]{{\bfseries #1}}
\newcommand*{\LongShortAux}[2]{%
\begingroup
\sbox0{\mdseries #1{}}%
\sbox2{\mdseries #1{j}}% j is used instead of i to prevent endless loop
\ooalign{%
\hidewidth\raisebox{\dimexpr\ht2-\ht0\relax}{\mdseries#1{}}\hidewidth\cr
\hfill#2\hfill
}%
\endgroup
}
\DeclareTextCompositeCommand{\=}{OT1}{a}{\LongShortAux{\=}{a}}
\DeclareTextCompositeCommand{\=}{OT1}{e}{\LongShortAux{\=}{e}}
\DeclareTextCompositeCommand{\=}{OT1}{i}{\LongShortAux{\=}{i}}
\DeclareTextCompositeCommand{\=}{OT1}{o}{\LongShortAux{\=}{o}}
\DeclareTextCompositeCommand{\=}{OT1}{u}{\LongShortAux{\=}{u}}
\DeclareTextCompositeCommand{\u}{OT1}{a}{\LongShortAux{\u}{a}}
\DeclareTextCompositeCommand{\u}{OT1}{e}{\LongShortAux{\u}{e}}
\DeclareTextCompositeCommand{\u}{OT1}{i}{\LongShortAux{\u}{i}}
\DeclareTextCompositeCommand{\u}{OT1}{o}{\LongShortAux{\u}{o}}
\DeclareTextCompositeCommand{\u}{OT1}{u}{\LongShortAux{\u}{u}}
\begin{document}
\begin{tabular}{rlll}
734 & \ro{h\={a}s} \g{\={i}n}\ro{t\={e}r} / \g{p\={e}s}\ro{t\={e}s} //
\g{d\= {u}}\ro{r\={o}} /// \g{C\u{a}}t\u{o} \gr{m\={i}}l\u{i}t\u{e}
\gr{s\={i}c}cum & SSSD & hhhh \\
\end{tabular}
\end{document}
评论
\bfseries
在 LaTeX2e 中更受欢迎\bf
。如果将旧字体命令混合使用,则会出现问题(例如\it\bf
:粗体获胜 --\itshape\bfseries
:粗体和斜体)。如果使用了另一种编码(例如
T1
),则\DeclareTextCompositeCommand
需要相应地更改行(例如更改OT1
为T1
)。
结合解决方案与凸起的持续时间标记
此示例结合了:
- 重新定义的重音字符带有凸起的持续时间标记。
- Unicode 输入(egreg 的回答)。
- 更好地支持复制和页面(包
accsupp
)。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{color}
\usepackage{accsupp}
\usepackage{stringenc}
\usepackage{newunicodechar}
%custom command : shortcut for formating
\newcommand{\gr}[1]{{\bfseries \color{red}#1}}
\newcommand{\ro}[1]{{\color{red}#1}}
\newcommand{\g}[1]{{\bfseries #1}}
\newcommand*{\LongShortAux}[3]{%
\begingroup
\StringEncodingConvert{\x}{\detokenize{#3}}{utf8}{utf16be}%
\BeginAccSupp{%
unicode,%
method=plain,%
ActualText=\x
}%
\sbox0{\mdseries #1{}}%
\sbox2{\mdseries #1{j}}%
\ooalign{%
\hidewidth\raisebox{\dimexpr\ht2-\ht0\relax}{\mdseries#1{}}\hidewidth
\cr
\hfill#2\hfill
}%
\EndAccSupp{}%
\endgroup
}
\makeatletter
\newcommand*{\DeclareLatinDuration}[3]{%
\DeclareTextCompositeCommand{#1}{\f@encoding}{#2}{%
\LongShortAux{#1}{#2}{#3}%
}%
\@ifundefined{u8:\detokenize{#3}}{%
\newunicodechar{#3}{#1{#2}}%
}{}%
}
\makeatother
\DeclareLatinDuration{\=}{a}{ā}
\DeclareLatinDuration{\=}{e}{ē}
\DeclareLatinDuration{\=}{i}{ī}
\DeclareLatinDuration{\=}{o}{ō}
\DeclareLatinDuration{\=}{u}{ū}
\DeclareLatinDuration{\u}{a}{ă}
\DeclareLatinDuration{\u}{e}{ĕ}
\DeclareLatinDuration{\u}{i}{ĭ}
\DeclareLatinDuration{\u}{o}{ŏ}
\DeclareLatinDuration{\u}{u}{ŭ}
\begin{document}
\begin{tabular}{rlll}
734 & \ro{hās} \g{īn}\ro{tēr} / \g{pēs}\ro{tēs} //
\g{dū}\ro{rō} /// \g{Că}tŏ \gr{mī}lĭtĕ
\gr{sīc}cum & SSSD & hhhh \\
\end{tabular}
\end{document}
答案2
编写时newunicodechar
考虑到了这一应用:直接输入标准选项未涵盖的带有“奇怪”重音的字符utf8
,inputenc
特别是拉丁语的元音长度。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{color}
\usepackage{newunicodechar}
%\newunicodechar{ă}{\u{a}} % not needed (already defined by the utf8 option)
\newunicodechar{ĕ}{\u{e}}
\newunicodechar{ĭ}{\u{\i}}
\newunicodechar{ŏ}{\u{o}}
\newunicodechar{ŭ}{\u{u}}
\newunicodechar{ā}{\={a}}
\newunicodechar{ē}{\={e}}
\newunicodechar{ī}{\={\i}}
\newunicodechar{ō}{\={o}}
\newunicodechar{ū}{\={u}}
%custom command: shortcut for formatting
\newcommand{\gr}[1]{\textbf{\color{red}#1}}
\newcommand{\ro}[1]{\textcolor{red}{#1}}
\newcommand{\g}[1]{\textbf{#1}}
\begin{document}
\title{Latin's Scansion}
\author{Evelyne}
\maketitle
\begin{tabular}{rlll}
734 & \ro{hās} \g{īn}\ro{tēr} / \g{pēs}\ro{tēs} // \g{dū}\ro{rō} ///
\g{Că}tŏ \gr{mī}lĭtĕ \gr{sīc}cum & SSSD & hhhh \\
\end{tabular}
\end{document}
答案3
当然,一个更简单的解决方案是使用 XeTeX,并使用适当的 UTF-8 编码字体,例如GNU 自由家族,因此字符可以“按原样”输入(例如 Ă ḥ)。