Как вставить дословный текст на английском языке в абзац на иврите?

Как вставить дословный текст на английском языке в абзац на иврите?

Краткое описание проблемы

Как вставить дословный текст на английском языке в абзац на иврите?

Демонстрация проблемы с помощью минимального рабочего примера.

Рассмотрим следующий код 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}

Связанный контент