ある言語から別の言語への図表翻訳を支援する LaTeX パッケージ

ある言語から別の言語への図表翻訳を支援する LaTeX パッケージ

私はトルコ語を勉強しており、TeX の助けを借りてトルコ語のテキストを英語に翻訳する作業に取り組みたいと思っています。この作業には TeX の方が適していると思います。私が求めているものに役立つパッケージが存在するかどうか、またはそれに近いものがあるかどうか知りたいです。

理想的には、最終結果として以下をレンダリングできるパッケージがほしいです。

  home     to go 
  Eve    gidiyorum 
    -      -`----' 
    |      |  | 
    |      |  `- present progressive tense (first person - singular) 
    |      `- git->gid (t->d) sound change ending 
    `- dative case ending for gitmek 

  I want to go home 

2番目の例:

   home     to go 
  Eveniz  gidiyoruz 
    -`-'    -`----' 
    | |     |  | 
    | |     |  `- present progressive tense (first person - plural) 
    | |     `- git->gid (t->d) sound change ending 
    | `- possessive suffix (second person - plural) 
    `- dative case ending for gitmek 

We are going to your home 

3番目の例:

German  class  to buy; to get;    to continue 
               to take, receive 
Almanca dersi       almaya       devam ediyorum 
            -         `--'              -`----' 
            |          |                |  | 
            |          |                |  `- present progressive 
            |          |                |     tense (first person - 
            |          |                |     singular) 
            |          |                `- devam et->devam ed (t->d) 
            |          |                   sound change ending 
            |          `- verbal noun -mA, dative for devam etmek 
            `- accusative case ending for almak 

   I want to continue taking German class

「-」と「`--'」は水平の中括弧です。

答え1

この回答では、ネストされたスタックを使用して結果を達成しています。最上位の単語スタックを設定するために使用するパッケージ\Longstackのマクロに加えてstackengine、追加のマクロを 1 つ導入しています。

そのマクロは です\notate{embraced letters}{lines to drop}{notation}。この構文では、「表記」は 1 行ですが、 を\parbox[t]使用するとそれを克服できます。「削除する行」は、すべての表記が収まるようにユーザーが数えたり計算したりする必要があります。現在、すべての行の末尾にマークを付けることを覚えておく必要がないように、先頭\unskipと末尾にを使用していますが、後で問題になる場合は、マクロ定義から削除できます。\ignorespaces%

\upbracefill解決が必要な興味深い癖。最小幅が 1 文字よりも大きいため、アンダーブレースには使用できませんでした。OP には、1 文字にアンダーブレースが必要なケースが明らかにありました。そのため、scalerelパッケージを使用して、a を適切な高さに伸ばし\{、横に回転させて、その高さを幅に変換しました。

tikzまた、表記矢印を曲げるための秘策を私は持っていないので、\hookrightarrow視覚的に機能するものを実現するためにカーニングを使用しました(そう願っています)。

編集。表記を小さく設定することで、読みやすさが向上する可能性があります。たとえば、ここの\footnotesize

\documentclass{article}
\usepackage[usestackEOL]{stackengine}
\usepackage{scalerel}
\usepackage{graphicx}
\parskip \baselineskip
\def\myupbracefill#1{\rotatebox{90}{\stretchto{\{}{#1}}}
\def\rlwd{.5pt}
\newcommand\notate[3]{%
  \unskip\def\useanchorwidth{T}%
  \setbox0=\hbox{#1}%
  \def\stackalignment{c}\stackunder[-6pt]{%
    \def\stackalignment{c}\stackunder[-1.5pt]{%
      \stackunder[-2pt]{\strut #1}{\myupbracefill{\wd0}}}{%
    \rule{\rlwd}{#2\baselineskip}}}{%
  \strut\kern7pt$\hookrightarrow$\rlap{ \footnotesize#3}}\ignorespaces%
}
\begin{document}
\hrulefill

  \Longstack{home\\Ev
   \notate{e}{4}{dative case ending for gitmek}
  }
~~\Longstack{to go\\gi
   \notate{d}{3}{git$\rightarrow$gid (t$\rightarrow$d) sound change ending}
   \notate{iyorum}{2}{present progressive tense (first person - singular)}
  }

I want to go home \par\hrulefill

  \Longstack{German\\ \\Almanca}
~~\Longstack{class\\ \\ders
   \notate{i}{8}{accusative case ending for almak}}
~~\Longstack{to buy; to get;\\to take; receive\\al
   \notate{maya}{7}{verbal noun -mA, dative for devam etmek}}
~~\Longstack{to continue\\ \\devam e
   \notate{d}{5}{%
     \parbox[t]{2in}{devam et$\rightarrow$devam ed (t$\rightarrow$d)\\
                     sound change ending}
   }
   \notate{iyorum}{2}{%
     \parbox[t]{2in}{present progressive\\
                     tense (first person -\\
                     singular)}
   }
  }

I want to continue taking German class \par\hrulefill
\end{document}

ここに画像の説明を入力してください

関連情報