По моему (долгому) опыту, пропущенные побеги персонажа - одна из немногих вещей, которые отсутствуют в Smalltalk. Для потоковой передачи хорошо подходят решения, использующие cr, tab и т. Д.
Однако, если вам нужен определенный управляющий символ в строке, это может быть некрасивым и трудным для чтения (используя «streamContents:» или «withCRs» для добавления newLine). В качестве альтернативы вы можете использовать один из (нестандартных) механизмов расширения строк. Например, в VisualWorks или Smalltalk / X вы можете написать (если я правильно помню):
'someString with newline<n>and<t>tabs' expandMacros
или даже с printf-подобной нарезкой printStrings другого объекта:
'anotherString<n><t>with newlines<n>and<t>tabs and<p>' expandMacrosWith:(Float pi)
Полагаю, что-то похожее есть и в Squeak и V'Age.
Но учтите: эти расширения выполняются во время выполнения. Таким образом, вы можете столкнуться со штрафом при интенсивном использовании их на многих строках.