Formatting 在Prolog中格式化表

Formatting 在Prolog中格式化表,formatting,prolog,Formatting,Prolog,我试图用Prolog打印出一个值表。目前我有以下几点: format('+~`-t~78|+ ~n', []). format('|~tTable Title~t~78||~n', []), format('+~`-t~78|+ ~n', []). 生成我的标题: +-----------------------------------------------------------------------------+ | T

我试图用Prolog打印出一个值表。目前我有以下几点:

format('+~`-t~78|+ ~n', []).
format('|~tTable Title~t~78||~n', []),
format('+~`-t~78|+ ~n', []).
生成我的标题:

+-----------------------------------------------------------------------------+ 
|                                 Table Title                                 |
+-----------------------------------------------------------------------------+ 
现在我想填充一些列以生成下面的格式

+-----------------------------------------------------------------------------+ 
| Name                 | Age      | Eye Colour        | Phone Number          |
+-----------------------------------------------------------------------------+ 
| Joe Bloggs           | 21       | Blue              | 01234567890           |
+-----------------------------------------------------------------------------+ 
| John Smith           | 32       | Brown             | (+44) 012345678       |
+-----------------------------------------------------------------------------+ 
我尝试了多种方法来均匀地分布柱子。但是,该代码:

format('| ~s~t~28|| ~s~t~8|| ~s~t~20|| ~s~t~24||~n', 
                              ['Name', 'Age', 'Eye Colour', 'Phone Number']).
给我提供了不均匀的列,这些列的间距不均匀

+-----------------------------------------------------------------------------+ 
| Name                      | Age| Eye Colour| Phone Number|
+-----------------------------------------------------------------------------+ 
关于这一点的文档有点混乱,我似乎无法理解,因此任何帮助都将不胜感激

制表符间距指的是绝对列:try

format('| ~s~t~28|| ~s~t~36|| ~s~t~56|| ~s~t~80||~n', 

您可以使用
~+
进行相对列:

?- format('| ~s~t~28|| ~s~t~8+| ~s~t~20+| ~s~t~24+|~n', 
                              ['Name', 'Age', 'Eye Colour', 'Phone Number']).
| Name                      | Age   | Eye Colour        | Phone Number          |
true.