The Arduino pin names are silkscreened right on the board, but sometimes you must know the corresponding ATMega168 pin name. I printed out The Fine Manual and penciled in the Arduino names, but that’s getting smudgy.
Herewith, the ATmega168 pinout with neatly printed Arduino pin names.

[Update:Turns out there’s an Official Version.]
Sometimes, you also must know the relation between hardware Timers and PWM output pins:
OC0A | PWM6 | PWM3 | OC2B | |
OC0B | PWM5 | PWM5 | OC0B | |
OC1A | PWM9 | PWM6 | OC0A | |
OC1B | PWM10 | PWM9 | OC1A | |
OC2A | PWM11 | PWM10 | OC1B | |
OC2B | PWM3 | PWM11 | OC2A |
A minor point to add to this is that the ATmega48, ATmega88, and ATmega328 have the same pinout as the ATmega168 and can be used in Arduino-type boards. The differences are in memory size.
For instance if you run out of code space in the Arduino, the ‘168 can be popped out and replaced with the ‘328. You will need an ISP programmer to stuff the correct bootloader into the ‘328, though.
ATmega48 = 4k flash, 256 bytes EEPROM, 512 bytes RAM
ATmega88 = 8k flash, 512 bytes EEPROM, 1024 bytes RAM
ATmega168 = 16k flash, 512 bytes EEPROM, 1024 bytes RAM
ATmega328 = 32k flash, 1024 bytes EEPROM, 2048 bytes RAM
Further, and a KEY point when trying to copy something like a makerbot extruder controller, the SMT version of the same chip has an additional 2 more analog inputs and of course those are the ones used for the HBP temp. So in other words, you either edit the firmware source or you must use an Arduino Pro from Sparkfun and wire the additional analog inputs which are not brought out to the headers. Also curious to see if it’s possible on the even newer SMT versions of the Arduino UNO.
Perhaps using those pins simplified the PCB layout? We’ll never know.
But, still …