包含希腊文段落的脚本

包含希腊文段落的脚本

我正在处理一份包含许多简短希腊语段落以及单个单词和表达的文档。将所有带有\gr{...}(用 定义 \def\gr#1{{\otherlanguage{polutonikogreek}#1}})的段落都包含进去是不切实际的,因为这很乏味,而且很容易忘记一些,所以我需要一个脚本来执行此操作。该命令只应用于英语单词中的希腊语,而不应用于仅包含希腊语(和 TeX 命令)的段落,对于这些段落,其他语言环境更合适。它应该考虑到希腊语段落可能包含标点符号和换行符(硬换行)。这里有一个可以尝试的 lipsum。希腊语 Unicode 范围是 0x0370--0x03FF 和 0x1F00--0x1FFF。如果有人有解决方案,我将不胜感激。

 Non eram  nescius, Brute,  cum, quae summis  ingeniis exquisitaque
 ἐπεὶ οὖν  ἄμφω doctrina  philosophi Graeco  sermone tractavissent,
 ea  Latinis  litteris mandaremus,  fore  ut  hic noster  labor  in
 varias κινήσεις  εἰ μὲν  ἕτεραι ἐν reprehensiones  incurreret. nam
 quibusdam, et iis quidem non admodum indoctis, totum hoc displicet
 philosophari. quidam  autem non tam id  reprehendunt, si remissius
 agatur, sed  tantum studium  τίνι ἢ  γὰρ, ἄμφω·  ἐν τῷ  πάσχοντι καὶ
 κινουμένῳ `ἢ ἡ  μὲν ποίησις' ἐν τῷ tamque multam  operam ponendam in
 eo  non arbitrantur.  erunt etiam,  et ii  quidem eruditi  Graecis
 litteris, contemnentes  Latinas, qui ποιοῦντι  ἡ δὲ πάθησις  ἐν τῷ
 πάσχοντι  se dicant  in Graecis  legendis operam  malle consumere.
 postremo  aliquos  futuros  suspicor,  qui me  ad  alias  litteras
 vocent, genus hoc  scribendi, etsi sit elegans,  personae tamen et
 dignitatis esse negent.

 Contra   quos    omnis   dicendum    breviter   existimo. Quamquam
 philosophiae quidem vituperatoribus satis  responsum est eo libro,
 (εἰ δὲ δεῖ καὶ ταύτην ποίησιν  καλεῖν ὁμώνυμος ἂν εἴη;) quo a nobis
 philosophia  defensa  et collaudata  est,  cum  esset accusata  et
 vituperata ab Hortensio. qui liber  cum et tibi probatus videretur
 et iis,  quos ego posse iudicare  arbitrarer, ἀλλὰ μὴν εἰ  τοῦτο ἡ
 plura suscepi  veritus ne movere hominum  studia viderer, retinere
 non posse. Qui autem,  si maxime hoc placeat,  moderatius tamen id
 volunt  fieri, difficilem  quandam temperantiam  postulant in  eo,
 κινοῦντι ἔσται  (ὁ γὰρ. αὐτὸς λόγος  quod semel  admissum coerceri
 reprimique non potest, ut propemodum iustioribus utamur illis, qui
 omnino avocent a  ἐπὶ κινοῦντος philosophia, quam  κίνησις ἐν his,
 qui rebus τῷ infinitis modum  constituant in reque eo meliore, quo
 maior sit, mediocritatem desiderent.

PS. 我想要的更精确的描述:相当于以下过程:转到下一个希腊字符;查看紧接在它前面的是否是\gr{;如果是,则转到匹配 }并重复;否则:插入\gr{;找到下一个拉丁字符;返回到最后一个希腊字符;}在它后面插入。重复。

PS II. 我现在正在使用

#!/usr/bin/perl
binmode STDIN,  ":utf8";
binmode STDOUT, ":utf8";
my $g=qr/[\x{0370}-\x{03FF}\x{1F00}-\x{1FFF}]/;
my $L=qr/[^a-zA-Z]/;
while (<>)
{
    s/( (?: $g $L* $g) )/\\gr{$1}/xg;
  print
}

必须使用命令行选项来调用它-0。除了一个小的美学问题外,这个方法可以正常工作:模式不知道它末尾的括号是否属于里面。

答案1

$p这是您的脚本。只需将您的内容通过管道传输即可。在逗号后添加您可能需要的任何其他标点符号[,]

#!/usr/bin/perl
binmode STDIN,  ":utf8";
binmode STDOUT, ":utf8";
my $g = qr/\p{Greek}/;
my $p = qr/[,]/;
while ( <> )
{
  s/( (?: ($g+$p*\s+$g+$p*\s*)+ | $g+$p* )+ )/\\gr{$1}/xg;
  print
}

输出:

 Non eram  nescius, Brute,  cum, quae summis  ingeniis exquisitaque
 \gr{ἐπεὶ οὖν  ἄμφω} doctrina  philosophi Graeco  sermone tractavissent,
 ea  Latinis  litteris mandaremus,  fore  ut  hic noster  labor  in
 varias \gr{κινήσεις  εἰ μὲν  ἕτεραι ἐν} reprehensiones  incurreret. nam
 quibusdam, et iis quidem non admodum indoctis, totum hoc displicet
 philosophari.

答案2

使用可直接使用该alphabeta包来编写 Unicode 希腊语。

\documentclass {article}
\usepackage [utf8]           {inputenc}
\usepackage [greek, english] {babel}
\usepackage                  {alphabeta}

\begin {document}

Text in Greek: τίνι ἢ  γὰρ, ἄμφω

\end {document}

相关内容