SWI-Prologの仕様についての質問です。ver 7.1.17 または ver 6.6.1 で確認したことですが、
基本的に現在のこの処理系はソースプログラム中のアトムに改行を含んでよい。それをインタプリタトップが読み込む際に'\n'コードに変換する。5行以上の改行を許可したい場合は、~/src/pl-incl.h の#define NEWLINES 5 の値を大きな値に変えて、コンパイルし直せばよい。そう理解しています。インタプリタトップに於いてもソースプログラムと同様です。
ところが、以下の例では、

?- read_term_from_atom('ab
cd',X,[]).
ERROR: Syntax error: Operator expected
ERROR: ab

ERROR: ** here **
ERROR: cd . 
?-

とエラーになってしまいます。これは atom_to_term/3 を使っても同じ現象が生じます。
マクロ処理的な前段を含むか含まないか、処理後のアトムを見ているか、処理前のアトムを
見ているか、によって起こっているようにも思えます。

これら述語はごく当たり前に使用する述語であり、もしこのような仕様だとすれば、
その悪影響は甚大であると考えます。これは、正当な理由のある仕様なのでしょうか。
それともバグの類であると考えて、改善を求めるべきなのでしょうか。