
Я изучаю турецкий язык и хотел бы поработать над переводом турецкого текста на английский с помощью 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
Второй пример:
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
Третий пример:
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
, который я использую для установки самых верхних стеков слов, я представляю один дополнительный макрос.
Этот макрос — \notate{embraced letters}{lines to drop}{notation}
. В этом синтаксисе «нотация» — это одна строка, хотя a \parbox[t]
может это обойти. «Строки для удаления» должны быть подсчитаны/вычислены пользователем, чтобы все нотации поместились. В настоящее время я использую лидирующий \unskip
и конечный \ignorespaces
, чтобы избежать необходимости помнить о конце всех строк с %
отметками, но если позже это окажется проблематичным, их можно удалить из определения макроса.
Интересные причуды, которые нужно было разрешить. Я не мог использовать \upbracefill
для подтяжки, потому что у него минимальная ширина, которая больше, чем одна буква, а в OP явно были случаи, когда для одной буквы требовалось подтяжка. Поэтому я использовал свой scalerel
пакет, чтобы растянуть a \{
до нужной высоты и повернуть его вбок, преобразуя эту высоту в ширину.
Кроме того, у меня нет никаких tikz
трюков в рукаве, чтобы сделать поворот локтя в стрелке обозначения, поэтому я просто использовал кернинг, \hookrightarrow
чтобы добиться чего-то визуально работающего (я надеюсь).
EDIT. Возможно, читаемость можно улучшить, если сделать обозначения меньшего размера. Например, здесь, в \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}