
При наборе лингвистических примеров с транскрипциями арабских буквхамзаиайн, ʾ и ʿ соответственно, выравнивание с буквальным переводом на строке ниже выглядит неуклюже. См. пример (1). Это также касается списков и табличных сред. Выравнивание в Таблице 1 не очень хорошее.
Способ исправить это — использовать , \llap{ʾ}
чтобы сдвинуть этот символ влево и выровнять слово со вторым символом. Это дает гораздо более красивый (на мой взгляд) пример (2) и Таблицу 2.
Теперь к моему вопросу. Есть ли способ автоматизировать это? Я хочу, чтобы два символа, ʾ и ʿ, становились \llap{ʾ}
и \llap{ʿ}
, когда им предшествует пробел (и, если возможно, также символ табуляции) в определенных средах, в первую очередь example
. Это решение будет работать для таблиц, если добавить пробел перед элементами, как в коде для Таблицы 1. Я думаю, что можно будет активировать эти символы. (Насколько я понимаю, можно активировать символы Unicode в XeLaTeX, который я и использую.) Я знаю о \@ifnextchar
, но здесь нужно что-то вроде \@ifprevchar
.
EDIT: Мне нужно решение, в котором я могу поместить отдельные слова в пример транскрипции в средах, например \textbf{}
.
\documentclass{article}
\usepackage{fontspec}
%\usepackage[utf8]{inputenc}
\usepackage{array}
\usepackage{covington}
\begin{document}
\begin{example}
\gll bi-lātīk ʾanā ʾaktub ʾaḥla nuṣūṣ
with-latex I write prittyest texts
\glt `With \LaTeX{} I can write the prettiest texts.'
\glend
\end{example}
\begin{example}
\gll bi-lātīk \llap{ʾ}anā \llap{ʾ}aktub \llap{ʾ}aḥla nuṣūṣ
with-latex I write prittyest texts
\glt `With \LaTeX{} I can write the prettiest texts.'
\glend
\end{example}
\begin{table}[h!]
\centering
\caption{Ugly alignment}
\begin{tabular}{>{\itshape}ll}
ʾanna & comp.\\
ʾinna & `verily'\\
lākinna & `but'\\
laʿalla & `perhaps'\\
layta & `if only'\\
\end{tabular}
\end{table}
\begin{table}[h!]
\centering
\caption{Nice alignment}
\begin{tabular}{>{\itshape}ll}
\llap{ʾ}anna & comp.\\
\llap{ʾ}inna & `verily'\\
lākinna & `but'\\
laʿalla & `perhaps'\\
layta & `if only'\\
\end{tabular}
\end{table}
\end{document}
решение1
Нелегко, но выполнимо, по крайней мере для tabular
и example
или examples
. Обратите внимание, как следует указывать изменение шрифта в таблице столбцов.
\documentclass{article}
\usepackage{fontspec}
\usepackage{etoolbox,array,collcell}
\usepackage{covington}
\makeatletter
\newrobustcmd{\checkforstart}{%
\@ifnextchar ʾ{\llap}{\checkforayn}%
}
\newcommand{\checkforayn}{%
\@ifnextchar ʿ{\llap}{}%
}
\makeatother
\newcolumntype{H}[1]{>{#1\collectcell\docheckforstart}l<{\endcollectcell}}
\newcommand{\docheckforstart}[1]{\checkforstart #1}
\begin{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% For technical reasons this can't go in the preamble, sorry
\catcode`\^^M=12
\patchcmd{\getwords}{\strut}{\strut\checkforstart}{}{}%
\catcode`\^^M=5
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{example}
\gll bi-lātīk ʾanā ʾaktub ʾaḥla nuṣūṣ ʿTEST
with-latex I write prittyest texts TEST
\glt `With \LaTeX{} I can write the prettiest texts.'
\glend
\end{example}
\begin{example}
\gll bi-lātīk \llap{ʾ}anā \llap{ʾ}aktub \llap{ʾ}aḥla nuṣūṣ ʿTEST
with-latex I write prittyest texts TEST
\glt `With \LaTeX{} I can write the prettiest texts.'
\glend
\end{example}
\begin{tabular}{H{\itshape} l}
ʾanna & comp.\\
ʾinna & `verily'\\
lākinna & `but'\\
laʿalla & `perhaps'\\
layta & `if only'\\
\end{tabular}
\end{document}