如何在 Common Lisp 中打印格式化输出?
在 Racket我用 display
来实现,如下所示:
(display "\33[3min italics\33[m\n")
我尝试过 (format t "~ain italics~a""\33[3m""\33[m")
但它不起作用。这也不是:(format t "~cin italics~c"#\33[3m #\33[m)
。
最佳答案
这里的主要问题是如何获得正确的字符序列。\33 是 Ascii char 27 的八进制或 Common Lisp 中的#\Esc。
(format t "~C[3min italics~C[m~%" #\Esc #\Esc)
会做你想做的事。
但你可以做得更好。有一个库叫cl-interpol它通过修改 reader 来展示 Common Lisp 的灵活性,以便您可以使用已经熟悉的语法。 例如:
* (ql:quickload 'cl-interpol)
To load "cl-interpol":
Load 1 ASDF system:
cl-interpol
; Loading "cl-interpol"
...
(CL-INTERPOL)
* (named-readtables:in-readtable :interpol-syntax)
#<NAMED-READTABLE :INTERPOL-SYNTAX {1002E6D6B3}>
* (format t #?"\33[3min italics\33[m\n")
in italics
NIL
关于formatting - 如何在 Common Lisp 中打印文本,以便可以使用转义序列对其进行格式化(类似于在 Racket 中显示)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72854612/