In einer Tabelle soll in einigen Zellen eine andere Sprache verwendet werden als im Rest des Dokuments. Die Sprachauswahl mit Hilfe eines selectlanguage-Befehls führt dazu, dass am Beginn der Zelle ein vertikaler Abstand von ca. einer halben Zeile eingefügt wird. Wie kann dies verhindert werden?

Open in Online-Editor
\documentclass{article}
\usepackage[english,ngerman]{babel}

\begin{document}

\begin{tabular}{|p{5cm}|p{5cm}|}
\hline
\selectlanguage{english} This is English text. This is English text. This is English text. \today &
Dies ist deutscher Text. Dies ist deutscher Text. Dies ist deutscher Text. \today \\
\hline
\end{tabular}

\end{document}

gefragt 07 Apr '15, 18:47

Cletus's gravatar image

Cletus
1.6k45666
Akzeptiert-Rate: 75%


Das dürfte ähnlich zu diesem Problem sein. Auch wenn ich den genauen Grund für das Verhalten nicht kenne, lässt es sich auch hier verhindern, wenn man sich vor dem \selectlanguage schon im horizontalen Modus befindet. Das kann man durch ein vorangestelltes \leavevmode oder \hspace{0pt} oder \mbox{} erreichen. Zusätzlich muss man darauf achten, dass kein ungewünschtes Leerzeichen eingefügt wird.

Open in Online-Editor
\documentclass{article}
\usepackage[english,ngerman]{babel}
\begin{document}
\begin{tabular}{|p{5cm}|p{5cm}|}
\hline
\mbox{}\selectlanguage{english}This is English text.
  This is English text. This is English text. \today &
Dies ist deutscher Text. Dies ist deutscher Text.
  Dies ist deutscher Text. \today \\
\hline
\end{tabular}
\end{document}

alt text


Update

@Clemens hat in seinem Kommentar einen weiteren Lösungsvorschlag gemacht. Man kann auch den Befehl \foreignlanguage{english}{...} für die andere Sprache verwenden. Allerdings werden dabei Datumskonventionen und sprachspezifische Texte nicht geändert. Wegen des Datums ist dann in diesem Beispiel noch ein \selectlanguage{english} im Argument nötig. Wäre in dem Beispiel keine Datumsangabe enthalten, würde ich diese Variante bevorzugen.

Open in Online-Editor
\documentclass{article}
\usepackage[english,ngerman]{babel}
\begin{document}
\begin{tabular}{|p{5cm}|p{5cm}|}
\hline
\foreignlanguage{english}{This is English text.
  This is English text. This is English text. \selectlanguage{english}\today} &
Dies ist deutscher Text. Dies ist deutscher Text.
  Dies ist deutscher Text. \today \\
\hline
\end{tabular}
\end{document}
Permanenter link

beantwortet 07 Apr '15, 20:33

esdd's gravatar image

esdd
17.7k254256
Akzeptiert-Rate: 62%

bearbeitet 08 Apr '15, 10:25

Danke, das hilft. Ich wäre auf eine logische Erklärung dieses Phänomens neugierig, aber die scheint ja nicht ganz trivial zu sein. Mit ist allerdings nicht ganz klar, welche Auswirkungen ein ungewünschtes Leerzeichen (Zeilenumbruch?) haben kann.

(07 Apr '15, 21:43) Cletus

@cletus Setz einfach mal hinter die mbox oder den Sprachschalter ein Leerzeichen. Das wird dann in der Tabellenzeile als erstes ausgegeben.

(07 Apr '15, 22:58) Johannes
2

\foreignlanguage{english}{This is ...} geht alternativ auch

(08 Apr '15, 09:39) cgnieder

@Clemens Danke für den Hinweis. Ich habe das jetzt ergänzt, allerdings wird bei Verwendung von \foreignlanguage{english}{...} die Ausgabe des Datums nicht mit angepasst.

(08 Apr '15, 10:27) esdd

Den today-Befehl brauche ich eigentlich nicht. Der dient hier nur dazu, um zu überprüfen, ob die Sprache wirklich umgeschaltet wurde. Kann man denn irgendwie überprüfen, welche Trennregeln gerade aktiv sind? Anhand eines zufälligen Textes mit einer zufälligen Trennstelle kann man das kaum erkennen, da sich die Trennregeln verschiedener Sprachen nicht allzu sehr unterscheiden.

(08 Apr '15, 18:55) Cletus
Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×254
×17

gestellte Frage: 07 Apr '15, 18:47

Frage wurde gesehen: 7,201 Mal

zuletzt geändert: 08 Apr '15, 18:55