Ответ 1
Итак, сегодня, похоже, безопасный день для решения этой проблемы...
OP, похоже, не настолько хорошо разбирается в PDF файлах. Однако он, очевидно, довольно грамотный парень LaTeX. Это значит, что он также должен хорошо знать TeX, учитывая, что он настолько полон поклонника Дональда Кнута...
Так много для предварительных. Теперь для настоящего мяса.
Во-первых,, чтобы процитировать официальную спецификацию PDF-1.7:
PDF не является языком программирования, а файл PDF не является программой.
(стр. 92, раздел 7.10.1)
Однако предварительный детектив формата PDF, PostScript, IS a Turing-complete язык программирования... Turing-complete, так же как TeX, создание Дональд Кнут, один из величайших компьютерных ученых всех времен.
Файлы PostScript, с другой стороны, ARE, и могут легко выполняться с помощью принтеров PostScript (хотя это время выполнения не может быть надежно определено заранее).
Следовательно, и второй, OP должен иметь возможность найти способ конвертировать свой высокоуровневый код LaTeX в низкоуровневый TeX-код. Этот код должен испускать программу PostScript, которая, в свою очередь, может быть выполнена принтером PostScript. Написание этого TeX-кода должно быть тривиальным для кого-то вроде OP, как только ему будет предоставлен код PostScript, который должен быть результатом его кода TeX.
Я сам не так хорошо разбираюсь в аспекте TeX этой процедуры решения проблем. Однако я могу помочь с PostScript.
PostScript, который должен произвести код OP TeX, выглядит следующим образом (наверняка возможны более оптимизированные версии - это только первый, быстрый и грязный снимок):
%!PS
% define variables
/n1 999 def
/t1 334 def
/n2 995 def
/t2 200 def
/n3 990 def
/s1 67 def
/t3 2 def
% run the computational code
n1 t1 mul
n2 t2 mul
n3 s1 mul
sub
add
t3 div
% print result on printer, not on <stdout>
/Helvetica findfont
24 scalefont
setfont
30 500 moveto
(Result for 'Project Euler Problem No. 1' :) show
/Helvetica-Bold findfont
48 scalefont
setfont
80 400 moveto
( ) cvs show
showpage
Отправьте этот PostScript-код на принтер PostScript, и он вычислит и распечатает решение.
Update
Чтобы ответить на один из комментариев: если вы замените последний раздел кода PostScript, начинающийся с /Helvetica findfont
простым инструктором print
, он не будет делать то, что вы можете себе представить.
print
не выводит принтер на печать. Вместо этого он просит интерпретатор PostScript записать самый верхний элемент в стеке (который должен быть (string)
!) На стандартный выходной канал. (Если самый верхний элемент в стеке не имеет типа (string)
, он вызывает ошибку typecheck
PostScript.)
Таким образом, отправка измененного файла PostScript (где print
заменила последний раздел моего PS-кода), принтер не будет работать (если только этот принтер не поддерживает интерактивный режим executive
PostScript, который не является стандартной частью языка PostScript). Однако он будет работать, если вы загрузите этот файл в Ghostscript в терминале или в окне cmd.exe
.