Wie kann man englischen Text wörtlich in einen hebräischen Absatz einbetten?

Wie kann man englischen Text wörtlich in einen hebräischen Absatz einbetten?

Eine kurze Beschreibung des Problems

Wie kann ich wörtlichen englischen Text in einen hebräischen Absatz einbetten?

Eine Demonstration des Problems anhand eines minimalen Arbeitsbeispiels

Betrachten Sie den folgenden LaTeX-Code, der in der Datei gespeichert ist ~/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}

Der Code babelkonfiguriert die Hauptsprache des Dokuments als Hebräisch und die Zweitsprache des Dokuments als Englisch. Anschließend werden im Hauptteil des Dokuments vier hebräische Sätze gedruckt, in die eine englische Phrase eingebettet ist. Die englische Phrase endet mit einem Ausrufezeichen. Das Ausrufezeichen ist als Teil der englischen Phrase zu betrachten und sollte daher rechts neben der englischen Phrase gesetzt werden.

Wenn die folgenden Befehle im Terminal ausgeführt werden:

> cd ~
> lualatex Test

die Datei ~/Test.pdfwird erstellt. Beim Öffnen in einem PDF-Viewer wird sie wie folgt angezeigt. (Ich habe nur den relevanten Teil der Anzeige als Screenshot erstellt.)

Ein zweisprachiges hebräisch-englisches Dokument

Wie man sieht, ist das Ausrufezeichen im ersten Satz falsch positioniert. Dies wird im zweiten Satz korrigiert, indem die englische Phrase, einschließlich des Ausrufezeichens, in einen \foreignlanguage{english}{...}Befehl eingeschlossen wird. Leider funktioniert derselbe Trick nicht, wenn die englische Phrase das Argument eines \verbBefehls ist. Ich musste die letzte Codezeile im Hauptteil des Dokuments auskommentieren, da das Dokument sonst nicht kompiliert werden würde und ~/Test.logdie folgende Meldung enthalten würde:

! 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!

Die gewünschte Ausgabe sollte der zweiten Satzzeile ähneln, mit der Ausnahme, dass die englische Phrase, einschließlich des Ausrufezeichens, in derselben Schriftart gesetzt werden sollte, die auch für den Satz in der dritten Satzzeile verwendet wurde.

Antwort1

\verbinnerhalb des Arguments eines anderen Befehls ist problematisch. Im Beispiel können Sie stattdessen \foreignlanguagedie babelUmgebung verwenden 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}

Hallo Welt!

In anderen Fällen könnte auch die Verwendung \selectlanguage{english}vor und \selectlanguage{hebrew}nach dem Text eine Alternative sein.

verwandte Informationen