Форматирование таблицы в Прологе - PullRequest
3 голосов
/ 28 февраля 2012

Я пытаюсь распечатать таблицу значений в Прологе. В настоящее время у меня есть следующее:

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 ]

3 голосов
/ 29 февраля 2012

Вы можете сделать относительные столбцы с ~+:

?- 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.
2 голосов
/ 28 февраля 2012

Расстояние между табуляциями относится к абсолютным столбцам: try

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