Re: babel でラテン語の韻律記号が正しく扱われない。

名前: ZR
日時: 2007-03-04 09:11:50
IPアドレス: 59.140.98.*

>>47272 現在(v3.8h)の latin.ldf は色々と辻褄の合わないところが多い ように見えます。以下のような仕様を想定して修正してみました。 - \languageattribute{latin}{withprosodicmarks} がない場合 は ^ = の shortcut は常に無効。この場合、^ = は initiate しないので active にならない。 - \languageattribute{latin}{withprosodicmarks} がある場合 は言語を latin に切り替えた直後は ^ = の shortcut が有効 (active になっている)。\ProsodicMarksOn/Off で有効/無効を 切り替えられるが、無効のまま他の言語に切り替えると ^ = の shortcut は無効のままになる(これは \shorthandon/off と 同じ動作)。(\ProsodicMarksOn/Off は catcode を変更する。) - \LatinMarksOn/Off は廃止する。これらの定義を \extraslatin の中(\extraswithprosodicmarks でなく)に入れていることを 考えると、これは withprosodicmarks なしで後から ^ = の shortcut を有効にしようと試みているように思えるが、当然 これは上手くいかない。 --- old/latin.ldf Sun Dec 11 23:01:46 2005 +++ latin.ldf Sun Mar 04 08:35:45 2007 @@ -59,6 +59,7 @@ \bbl@declare@ttribute{latin}{withprosodicmarks}{% \expandafter\addto\expandafter\extraslatin \expandafter{\extraswithprosodicmarks}% + \ProsodicMarks } \@namedef{captionslatin}{% \def\prefacename{Praefatio}% @@ -83,8 +84,8 @@ \def\proofname{Demonstratio}% \def\glossaryname{Glossarium}% } +\def\november{Novembris}% \def\datelatin{% - \def\november{Novembris}% \def\today{% {\check@mathfonts\fontsize\sf@size\z@\math@fontsfalse\selectfont \uppercase\expandafter{\romannumeral\day}}\nobreakspace @@ -133,7 +134,7 @@ \fi \let\@tempA\@undefined } -\addto\extraslatin{\def\ProsodicMarksOn{% +\addto\lt@noprosodicmarks{\def\ProsodicMarksOn{% \GenericError{(latin)\@spaces\@spaces\@spaces\@spaces}% {Latin language error: \string\ProsodicMarksOn\space is defined by setting the\MessageBreak @@ -142,7 +143,8 @@ fatal errors that I can't recover}% {See the Latin language description in the babel documentation for explanation}{\@ehd}}} -\addto\extraslatin{\let\ProsodicMarksOff\relax} +\addto\lt@noprosodicmarks{\let\ProsodicMarksOff\relax} +\lt@noprosodicmarks \catcode`\= \active \catcode`\^ \active \addto\extraslatin{\languageshorthands{latin}}% @@ -150,7 +152,7 @@ \addto\extraswithprosodicmarks{\bbl@activate{=}}% \addto\noextraswithprosodicmarks{\bbl@deactivate{^}}% \addto\noextraswithprosodicmarks{\bbl@deactivate{=}}% -\addto\extraswithprosodicmarks{\ProsodicMarks} +%\addto\extraswithprosodicmarks{\ProsodicMarks} \def\ProsodicMarks{% \def\ProsodicMarksOn{\catcode`\^ 13\catcode`\= 13\relax}% \def\ProsodicMarksOff{\catcode`\^ 7\catcode`\= 12\relax}% @@ -176,12 +178,13 @@ \textormath{\={o}\bbl@allowhyphens}{\bar{o}}}% \declare@shorthand{latin}{=u}{% \textormath{\={u}\bbl@allowhyphens}{\bar{u}}}% +\AtBeginDocument{\ProsodicMarksOn}% } \catcode`\= 12\relax \catcode`\^ 7\relax -\addto\extraslatin{\def\LatinMarksOn{\shorthandon{^}\shorthandon{=}}} -\addto\extraslatin{\def\LatinMarksOff{\shorthandoff{^}\shorthandoff{=}}} -\addtoextraslatin{\LatinMarksOff} +%\addto\extraslatin{\def\LatinMarksOn{\shorthandon{^}\shorthandon{=}}} +%\addto\extraslatin{\def\LatinMarksOff{\shorthandoff{^}\shorthandoff{=}}} +%\addtoextraslatin{\LatinMarksOff} \initiate@active@char{"}% \addto\extraslatin{\bbl@activate{"}% } # この辺の定義も変ですね。 # \declare@shorthand{latin}{^a}{% # \textormath{\u{a}\bbl@allowhyphens}{\hat{a}}}% # ~~~~~~~

この書き込みへの返事:

お名前
題名 
メッセージ(タグは <a href="...">...</a> だけ使えます。適宜改行を入れてください)