
Краткое описание проблемы
Как вставить дословный текст на английском языке в абзац на иврите?
Демонстрация проблемы с помощью минимального рабочего примера.
Рассмотрим следующий код LaTeX, сохраненный в файле ~/Test.tex
.
\documentclass{article}
\usepackage[bidi=basic,provide=*,english,hebrew]{babel}
\babelfont{rm}{FreeSerif}
\usepackage{enumitem}
\begin{document}
א
Hello, world!
א
\foreignlanguage{english}{Hello, world!}
א
\verb|Hello, world!|
א
%\foreignlanguage{english}{\verb|Hello, world!|}
\end{document}
Код используется babel
для настройки основного языка документа как иврита, а вторичного языка документа как английского. Затем в теле документа он печатает четыре предложения на иврите, в которые встроена английская фраза. Английская фраза заканчивается восклицательным знаком. Восклицательный знак следует считать частью английской фразы, и поэтому его следует набирать справа от английской фразы.
При выполнении в Терминале следующих команд:
> cd ~
> lualatex Test
файл ~/Test.pdf
создан. При открытии в просмотрщике PDF он отображается следующим образом. (Я делаю снимок экрана только соответствующей части дисплея.)
Как можно заметить, в первом предложении восклицательный знак расположен неправильно. Это исправлено во втором предложении путем помещения английской фразы, включая восклицательный знак, внутрь команды \foreignlanguage{english}{...}
. К сожалению, тот же трюк не срабатывает, когда английская фраза является аргументом команды \verb
. Мне пришлось закомментировать последнюю строку кода в теле документа, потому что в противном случае документ не скомпилировался бы и ~/Test.log
включал бы следующее сообщение:
! Missing } inserted.
<inserted text>
}
l.18 \foreignlanguage{english}{\verb|Hello, world!|}
?
! Emergency stop.
<inserted text>
}
l.18 \foreignlanguage{english}{\verb|Hello, world!|}
End of file on the terminal!
Желаемый результат должен быть аналогичен результату во второй строке набора, за исключением того, что английская фраза, включая восклицательный знак, должна быть набрана тем же шрифтом, что и в третьей строке набора.
решение1
\verb
внутри аргумента другой команды проблематично. В примере вы можете вместо этого \foreignlanguage
использовать babel
окружение otherlanguage
:
\documentclass{article}
\usepackage[bidi=basic,provide=*,english,hebrew]{babel}
\babelfont{rm}{FreeSerif}
\usepackage{enumitem}
\begin{document}
א
Hello, world!
א
\foreignlanguage{english}{Hello, world!}
א
\verb|Hello, world!|
א
\begin{otherlanguage}{english}\verb|Hello, world!|\end{otherlanguage}
\end{document}
В другом случае альтернативой может быть использование \selectlanguage{english}
перед текстом и после него.\selectlanguage{hebrew}