# How to insert a image in plain TeX using no helping library?

How could I insert a image in plain TeX, having a good control over its positions and scale, using no additional library (supposedly, a lot of ps commands as argument of \special)? I am intend to work with pdftex and using a png file. No problem in using tex -> dvips -> ps2pdf.

PS: I want to understand in a low level how TeX operates for this kind of problem.

• check the pdftex documentation, `texdoc pdftex-a`, it describes the low-level commands. Or study the latex graphicx driver pdftex.def. Jun 17 '21 at 11:38
• Campa, tex.stackexchange.com/q/63789/82917 - this question is different from mine. Jun 17 '21 at 11:46
• Ulrike - good suggestion. Thank you! Jun 17 '21 at 11:48
• Plain TeX has no graphics capability whatsoever. Instead one would use \special{...} to pass image files directly to the DVI where hopefully the viewer would convert and display them. Jun 17 '21 at 12:49

The Plain format does not provide any graphics facilities; those are provided by the engine or the DVI driver.

Since you mention that you mean to use PDFTeX, I suggest to you to grab the manual and read sections 7.9 and 8. The same approach should work, to the best of my knowledge, with LuaTeX, though the engine is far bigger and more complex. XeTeX also supports different graphics formats; read section 6 of the XeTeX Reference Guide.

Since `dvips` does not support png/jpg graphics, the way to include graphics in those formats via DVI files is by using the `dvipdf[m[x]]` driver; see section 8 of the manual for further details.

If, however, you still want to mess with including PostScript files or instructions directly, via `\special`s, and then process them with `dvips`, read sections 5.1 and 5.3 of the `dvips` manual.

The graphics-pln package extends the Plain format to support LaTeX style graphics inclusion via miniltx; you may learn something by reading the source code.

OPmac are macros for plain TeX, they provide a macro `\inspic` which inserts the graphics using `\pdfximage` and `\pdfrefximage` primitives. You can use OPmac macros or read the implementation of the `\inspic` macro and inspire. The implemetation is only four lines of code (unlike 200 lines of graphicx). OPTeX is LuaTeX+PlainTeX+OPmac, the `\inspic` macro including its implementation is documented at page 136 of the OpTeX manual.

• `\inspic` works in XeTeX too, see opmac-xetex.tex. IMHO, it is better to do simple things with single engine (like OpTeX) than solve problems much more complicated way for various engines or output devices. Of course, there is no standard way to deal graphics in TeX, but if we select one engine, we can do very straightforward macros. Jun 19 '21 at 6:37
• When user use `\input opmac` and `\inspic` then `\inspic` works in pdfTeX with PDF output, luaTeX and XeTeX. What primitives are used is typically not important for users. So, the notice "`\inspic` is supported only in PDFTeX" is at least inaccurate. Jun 21 '21 at 12:47
• Yes, this specific "user" wants primitive solution. I give the answer: you can see the primitive solution from opmac.tex macro file, see four related lines here. Of course, if somebody needs a general solution for all back-ends, then there is no simple four lines, but user needs to create many branches of his macros. But user asks for simplicity, which is not to take account all backends nor reading and inspiring from graphics.sty (600 lines of code plus reads trig.sty: 100 lines plus graphics.cfg: 60 lines plus pdftex.def: 680 lines) nor graphicsx.sty (200 lines plus the same input files). Jun 22 '21 at 11:26
• The "general case" is impossible because there is no standard of including graphics in TeX. Imagine various `\specials` for HP, Inkjet languages, more more languages of various historical devices, PostScript, dvi-to-something drivers etc., etc. My answer selects one most typically used backend and illustrates that things can be simple. Jun 22 '21 at 17:15
• If you fear that I have "hatred for LaTeX" then your fearings are unfounded. But this is off topic, OP didn't asked for LaTeX solution and I show non-LaTeX solution. May be, your fearing blinds you more often than not... :). Jun 22 '21 at 17:22