Absatz mit Courier in der Cals-Tabelle in Zeilen aufteilen

Absatz mit Courier in der Cals-Tabelle in Zeilen aufteilen
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[a4paper]{geometry}
\geometry{top=10mm, bottom=10mm, left=10mm, right=10mm}
\geometry{showframe}
\usepackage{courier}
\usepackage[T1]{fontenc}
\usepackage{cals}

\makeatletter

\begin{document}
%\renewcommand*\familydefault{\sfdefault}
\renewcommand*\familydefault{\ttdefault}
\normalfont

\begin{calstable}

\colwidths{
{15pt}
{10pt}
{515.60239pt}
}
\cals@paddingL=1pt
\cals@paddingR=1pt
\def\cals@borderT{0.2pt}
\def\cals@borderB{0.2pt}
\def\cals@borderL{0.2pt}
\def\cals@borderR{0.2pt}
\brow
\alignR \cell{\strut E}
\alignC \cell{\strut =}
\alignL \cell{\strut this is the english text, this is the english text, this is the english text, this is the english text, this is the english text, this is the english text, this is the english text}
\erow

\end{calstable}

Why doesn't the text break in the rigth place? In case of using sfdeault, it's good. 
\end{document}

Antwort1

Das ist ähnlich wieSo lassen sich lange \texttt-Abschnitte umbrechen. Standardmäßig tthat die Schriftart keine dehnbaren Zwischenwortabstände und so gibt es für TeX nicht viel Spielraum bei der Wahl der Zeilenumbrüche. Das Hinzufügen von etwas Dehnbarkeit verbessert den Zeilenumbruch:

Beispielausgabe

\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[a4paper]{geometry}
\geometry{top=10mm, bottom=10mm, left=10mm, right=10mm}
\geometry{showframe}
\usepackage{courier}
\usepackage[T1]{fontenc}
\usepackage{cals}
\makeatletter

\newcommand*\flextt{%
  \ttfamily
  \fontdimen2\font=0.4em% interword space
  \fontdimen3\font=0.2em% interword stretch
  \fontdimen4\font=0.1em% interword shrink
  \fontdimen7\font=0.1em% extra space
}

\begin{document}
\flextt

\begin{calstable}

\colwidths{
{15pt}
{10pt}
{515.60239pt}
}
\cals@paddingL=1pt
\cals@paddingR=1pt
\def\cals@borderT{0.2pt}
\def\cals@borderB{0.2pt}
\def\cals@borderL{0.2pt}
\def\cals@borderR{0.2pt}
\brow
\alignR \cell{\strut E}
\alignC \cell{\strut =}
\alignL \cell{\strut this is the english text, this is the english text, this is the english text, this is the english text, this is the english text, this is the english text, this is the english text}
\erow

\end{calstable}

Why doesn't the text break in the rigth place? In case of using sfdeault, it's good. 
\end{document}

Antwort2

Der Versuch, Wörter in Schriftarten voneinander zu trennen, ist immer ein großes Problem tt.

Sie können versuchen, eine sloppyparUmgebung zu verwenden:

\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[a4paper]{geometry}
\geometry{top=10mm, bottom=10mm, left=10mm, right=10mm}
\geometry{showframe}
\usepackage{courier}
\usepackage[T1]{fontenc}
\usepackage{cals}

\makeatletter

\begin{document}
%\renewcommand*\familydefault{\sfdefault}
\renewcommand*\familydefault{\ttdefault}
\normalfont

\begin{calstable}

\colwidths{
{15pt}
{10pt}
{515.50239pt}
}
\cals@paddingL=1pt
\cals@paddingR=1pt
\def\cals@borderT{0.2pt}
\def\cals@borderB{0.2pt}
\def\cals@borderL{0.2pt}
\def\cals@borderR{0.2pt}
\brow
\alignR \cell{\strut E}
\alignC \cell{\strut =}
\alignL \cell{\begin{sloppypar}\strut this is the english text, this is the english text, 
this is the english text, this is the english text, this is the english text, 
this is the english text, this is the english text\end{sloppypar}}
\erow

\end{calstable}

Why doesn't the text break in the rigth place? In case of using sfdeault, it's good.
\end{document}

Ausgabe:

Bildbeschreibung hier eingeben

verwandte Informationen