Присвоение строк с символом ')' переменной в postscript - PullRequest
0 голосов
/ 01 февраля 2019

Я хочу присвоить «asd) asd» эту строку переменной.Но всякий раз, когда я делаю это, это не работает.

У меня есть похожий код со строками типа "asdasd", и это сработало.Но всякий раз, когда я ввожу символ ')', он перестает работать

%this works
%!PS-Adobe-1.0
/units (asdasd) def
/Times-Roman findfont 20 scalefont setfont
300 300 moveto units show
showpage

%this does not 
%!PS-Adobe-1.0
/units (asd)asd) def
/Times-Roman findfont 20 scalefont setfont
300 300 moveto units show
showpage

Ответы [ 3 ]

0 голосов
/ 13 февраля 2019

На самом деле есть способ поместить asd)asd как есть в вашей программе, при условии, что это всего одна строка (т. Е. В ней нет символа новой строки), и вы делаете это вне любой { } (то есть вы не можете использовать это в процедуре):

currentfile 1000 string readline asd)asd
pop

Ваша строка идет от ровно через один пробел после readline до концалинии.

Чтобы определить имя /units:

/units currentfile 1000 string readline asd)asd
pop def

Конечно, отрегулируйте размер строки (например, 1000) в соответствии с вашими потребностями.

0 голосов
/ 08 июня 2019

Найдите "psrefman.pdf" ( Справочное руководство по языку PostScript ®, ВТОРОЕ ИЗДАНИЕ ) и прочитайте раздел " Строки " в " Глава 3: Язык "(стр. 28).Все это есть:

Внутри текстовой строки символ \ (обратная косая черта) рассматривается как «escape» для различных целей, таких как включение несбалансированных скобок, непечатных символов и символа \сам.Символ, следующий сразу за \, определяет его точную интерпретацию.

Если вы предпочитаете ps3refman.pdf ( PostScript ® ЯЗЫКОВАЯ ССЫЛКА, третье издание ), вместо этого он находится на странице 29, Глава " Язык", раздел" Синтаксис", подраздел" Кодировка ASCII", подраздел" Строки", абзац" Литеральные текстовые строки".

0 голосов
/ 01 февраля 2019

Символ ) - это специальный токен в PostScript, если вы хотите использовать его в строке, есть несколько способов.Во-первых, вы можете использовать шестнадцатеричную строку:

/units <61736429617364> def

В качестве альтернативы, как и в других языках, вы можете «экранировать» специальные токены в строках.Это можно найти на стр. 29 третьего издания Справочного руководства по языку PostScript.

/units (asd\)asd) def
...