Let’s look at one last format
example that uses some of the control sequences you’ve already seen, as well as some new ones. This example will illustrate how the varied control sequences can be combined for complex behavior.
> (format t "|˜{˜<|˜%|˜,33:;˜2d ˜>˜}|" (loop for x below 100 collect x))
| 0 1 2 3 4 5 6 7 8 9 |
|10 11 12 13 14 15 16 17 18 19 |
|20 21 22 23 24 25 26 27 28 29 |
|30 31 32 33 34 35 36 37 38 39 |
|40 41 42 43 44 45 46 47 48 49 |
|50 51 52 53 54 55 56 57 58 59 |
|60 61 62 63 64 65 66 67 68 69 |
|70 71 72 73 74 75 76 77 78 79 |
|80 81 82 83 84 85 86 87 88 89 |
|90 91 92 93 94 95 96 97 98 99 |
To create this nicely formatted table of numbers, we first use the looping control sequences ˜{ ˜}
to iterate through a list of numbers created by the loop
command. Within the iteration, we place justification control sequences ˜< ˜>
, which we’ve used earlier. In this case, we don’t use them to justify our text, but instead use them to divide the resulting text into pieces. This is how we break our 100 numbers into nice clean rows of 10. We place the ˜:;
control sequence inside our justification control sequences ˜< ˜>
, which causes text to be broken into pieces of equal length.
When used inside a justification, the control string preceding this sequence ˜:;
(which in this case happens to be |˜%|
) will be triggered only if the current cursor position is beyond a certain point, as specified by the second parameter, 33
. In other words, we’re telling the format function “Hey, once you have 33 characters’ worth of text, start a fresh line.”
The |˜%|
control string causes the line break and vertical bars to be printed. The number to be displayed is formatted using ˜2d
, which prints a left-justified number, two characters wide.
For full details on every single control sequence, see the Common Lisp HyperSpec at http://www.lispworks.com/documentation/HyperSpec/Front/index.htm.
3.147.84.157