3

OpenOfficeサイトからダウンロードしたハイフネーションaglorithmを探していますが、コメントを見た後、パラメーターrepposcutが何のためにあるのか理解できませんでした。知識のある人がこれらのパラメータが何をするのか教えてもらえますか?ここにコメントがあります。

例から、 ffは単一のfに置き換えることができると言っているように見えますが、それはハイフンと何の関係があるのでしょうか。

ありがとう、


/*

int hnj_hyphen_hyphenate2(): non-standard hyphenation.

(It supports Catalan, Dutch, German, Hungarian, Norwegian, Swedish etc. orthography, see documentation.)

input data: word: input word word_size: byte length of the input word

hyphens: allocated character buffer (size = word_size + 5) hyphenated_word: allocated character buffer (size ~ word_size * 2) or NULL rep, pos, cut: pointers (point to the allocated and zeroed buffers (size=word_size) or with NULL value) or NULL

output data: hyphens: hyphenation vector (hyphenation points signed with odd numbers) hyphenated_word: hyphenated input word (hyphens signed with ='), optional (NULL input) rep: NULL (only standard hyph.), or replacements (hyphenation points signed with=' in replacements); pos: NULL, or difference of the actual position and the beginning positions of the change in input words; cut: NULL, or counts of the removed characters of the original words at hyphenation,

Note: rep, pos, cut are complementary arrays to the hyphens, indexed with the character positions of the input word.

For example: Schiffahrt -> Schiff=fahrt, pattern: f1f/ff=f,1,2 output: rep[5]="ff=f", pos[5] = 1, cut[5] = 2

Note: hnj_hyphen_hyphenate2() can allocate rep, pos, cut (word_size length arrays):

char ** rep = NULL; int * pos = NULL; int * cut = NULL; char hyphens[MAXWORDLEN]; hnj_hyphen_hyphenate2(dict, "example", 7, hyphens, NULL, &rep, &pos, &cut);

See example in the source distribution.

*/

int hnj_hyphen_hyphenate2 (HyphenDict *dict, const char *word, int word_size, char * hyphens, char *hyphenated_word, char * rep, int ** pos, int ** cut);

4

1 に答える 1

3

次のコメントを参照していると思います。

// 例えば:
// Schiffahrt-> Schiff = fahrt、
//パターン:f1f / ff = f、1,2
//出力:rep [5] = "ff = f"、pos [5] = 1、cut [5] = 2

この例は、1990年代からのスペル改革前のドイツ語のハイフネーション規則を示しています。ドイツ語の複合名詞は1つの単語として記述され、古い規則に従って、母音が続く場合に備えて、単語「Schifffahrt」(「Schiff」と「Fahrt」で構成される)の「f」などの3番目の子音は省略されました。 (「Schifffahrt」は「Schiffahrt」と書かれていました)が、ハイフネーション時に省略された文字はまだ書かれていました。

したがって、この例の意味は、「ff」を単一の「f」に置き換えることができるということではなく、「ff」を「ff-f」に置き換えることができるということです。

したがって、パラメータの意味は次のようになります。

  • rep:「ff」の代わりに使用される置換「ff-f」が含まれています
  • pos:値1は、ハイフンの5の位置の1文字前に置換が開始されることを意味します。
  • cut:値2は、入力ワードから2文字を削除する必要があることを意味します。

これらのパラメータは、ハイフンでつながれたときに単語のスペルが異なるというまれなケースでのみ使用されるようです。

于 2010-11-11T22:34:08.360 に答える