在Prolog中格式化表格

时间:2012-02-28 19:22:01

标签: formatting prolog

我正在尝试在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|
+-----------------------------------------------------------------------------+ 

关于这方面的文件有点令人困惑,我似乎无法理解它,所以任何帮助都会受到赞赏!

2 个答案:

答案 0 :(得分:3)

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

?- 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.

答案 1 :(得分:2)

标签间距是指绝对列:尝试

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