Farbige Ausgabe im terminal von Fortran
Mein Programm-Ausgänge Zustand der Berechnungen an das terminal und beinhaltet einiges an Informationen. Ich möchte, wenn möglich, Farbcode Teile des Textes.
Ich habe gesehen, wie es getan werden kann in der Bash und C++ durch die Bezugnahme auf threads auf dieser Seite. Allerdings habe ich nicht in der Lage gewesen zu verwenden, die das gleiche Ergebnis zu erzielen in Fortran (modern). Zum Beispiel habe ich versucht, dieses Beispiel-code, ich dachte, das sollte funktionieren:
PROGRAM test
PRINT*, 'A great color is \033[95m pink \033[0m.'
END PROGRAM test
Hätte ich erwartet, dass der Ausgang "Ein tolle Farbe ist rosa", wo rosa ist rosa gefärbt. Stattdessen bekomme ich "Eine tolle Farbe ist \033[95m rosa \033[0m." Ich verstehe nicht, was mir fehlt.
Wenn ich ersetzen Sie die print-Zeile in den code mit: CALL EXECUTE_COMMAND_LINE("echo 'Eine tolle Farbe ist \033[95m rosa \033[0m.'") dann bekomme ich die Ausgabe wie gewünscht. Aber ich würde nicht wollen, zu halten, den Aufruf auf ein echo von meinem code. Gibt es eine Möglichkeit, die ich bekommen kann farbige Ausgabe?
Dank!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Escape-Zeichen-Darstellung als '\033' scheint nicht für Sie arbeiten. Ich habe keine fortran-praktisch, um zu überprüfen, aber Sie könnten versuchen, die explizit mit dem Charakter, statt die c-Stil-Flucht durch aufrufen der
char
- Konvertierung-Funktion, D. H., der tatsächliche Charakter von aufrufenchar(27)
und bauen es in Ihre Ausgabe-string in den richtigen stellen.print *, 'A great color is '//achar(27)//'[95m pink '//achar(27)//'[0m.'
Dies ist eine alte Frage, aber ich dachte, ich würde werfen in meiner Antwort für den Fall, jemand kommt später (so wie ich) auf der Suche nach einer Antwort auf diese Frage.
Hatte ich ein ähnliches problem wie du hast, zu versuchen, um escape-Sequenzen zu arbeiten. Ich landete auf der man-Seite für gfortran. die Suche nach "escape" führen mich zu der compiler-option '-fbackslash'. Aus der man-page:
So, um escape-Sequenzen zu arbeiten, die in Fortran, alles, was wir tun müssen, ist das kompilieren mit dieser option. Das einzige, was anders ist, ist dass wir mit Hexadezimalzahlen, die zusammen mit x anstelle von oktal-zahlen. In diesem speziellen Fall, statt
\033
wir verwenden\x1B
. Zum BeispielPRINT *, "\x1B[31mThis text is red.\x1B[0m
wird gedruckt, text in rot.Ich denke, diese Methode ist definitiv vorzuziehen, um die Verkettung einer Reihe von individuell definierten Zeichen jedes mal, wenn wir wollen, Farbe zu verwenden.
Wenn Sie kompilieren, mit ifort, die Sie brauchen, um zu kompilieren mit "-davon ausgehen bscc", nur dann kann man
codes sind:
Ich habe gerade stolperte auf den foul module/- Bibliothek, die scheint genau das zu tun, was Sie wollen. Ich noch nicht benutzt, aber gibt es bald als formatierte Ausgabe im terminal von meinem Fortran-Programme sehr nützlich sein würde.