
Designing a Business Card in LaTeX - opieters
https://olivierpieters.be/blog/2017/02/11/designing-a-business-card-in-latex
======
NelsonMinar
If you're going to go through all the trouble of typesetting a business card
in LaTeX, you really ought to use Computer Modern Roman so that folks _know_
you typeset it in LaTeX. (Related; resumes in CMR always have +10
credibility.)

~~~
opieters
I think this need not be the case. When creating this, I wanted it to look
good and the way I wanted it. Not make it scream "LaTeX".

For a CV, Computer Modern might be more apt since there's also more text on
it. But again, why make it scream LaTeX if one can do it more subtle and make
it more personal at the same time?

Do note that I have a LaTeX PDF style CV as well, but it's not linked in the
article (nor available online).

~~~
bhickey
I edit a genre fiction and we do all our layout in XeTeX. I picked it because
it's the right tool for the job, and I don't know PageMaker. The colophon
calls attention to it because I think it's helpful to tell others how you made
something (typefaces, tools, etc.) rather than for nerd cred.

[https://www.aliterate.org/aliterate-
page47.pdf](https://www.aliterate.org/aliterate-page47.pdf)

The typefaces are Minion and Myriad.

~~~
eriknstr
When I copy text from your PDF it comes out all garbled. Does this happen to
others as well? Is it intentional; some form of copy protection?

~~~
bhickey
Huh, totally weird. Maybe it's an encoding issue? The character appear to be
getting shifted by -39 (ex. c 143 ->D 104) I never noticed because I'm
typesetting for print.

~~~
andrewshadura
I think you need to use some PDF package to have the encoding set correctly. I
had the same issue in the past, but I don't remember how I solved it.

------
jilljennV
In March 2014, I attended a conference in Atlanta. In the subway, some nice
guy told me I __had to __make business cards for the conference. So I went to
some kinko and asked:

\- How much for 250 business cards? \- $69. \- If I provide a PDF and just ask
you to print and cut, can you do it for today? \- Yes. \- How much? \- $39. Do
you have the file? \- Yes.

It was a lie. I opened a new LaTeX document and typed this thing, thanks to
Stack Overflow.

[https://github.com/jilljenn/business-
card](https://github.com/jilljenn/business-card)

~~~
aw3c2
I don't quite get why LaTeX is special here. You could have done the same in
Inkscape, Word or whatever other text stuff related program.

~~~
wycx
Even better, you could layout with Inkscape AND typeset the text with LaTeX
using textext:
[https://bitbucket.org/pitgarbe/textext](https://bitbucket.org/pitgarbe/textext)

~~~
TranquilMarmot
This is so silly and yet so awesome. I might actually use it in the future.

------
jakobegger
These are really beautiful business cards.

But man, does anybody actually get value out of their business cards? No
interesting opportunity has ever come up for me as a result of sharing
business cards.

At some point I stopped taking them with me. I still have a bunch of them in
my desk drawer, they're very outdated, and I only use them for grocery lists.

Is that just me, or are business cards going out of fashion in general?

~~~
chrisseaton
Don't travel to Japan without business cards. It's really awkward when
everyone gives you one and asks for one back, as I think exchanging them is an
important part of meeting someone there.

~~~
Tharkun
Indeed. Remember: accept them with both hands and briefly inspect them. It's
the polite thing to do.

~~~
BrandoElFollito
Absolutely. You can also ask about the name pronunciation, etc. This is
Japanese small talk.

------
Jonovono
Nice!

I recently re-did my business cards. Pretty happy with how they came out:
[https://pbs.twimg.com/media/C25LX0bXAAAWWYL.jpg:large](https://pbs.twimg.com/media/C25LX0bXAAAWWYL.jpg:large)

~~~
saalaa
Hey, what font did you use? One notable feature is that the @ is very circular
which is quite rare with fixed fonts.

~~~
Jonovono
It's called Cutive Mono! Took awhile to settle on one :p

------
guitarbill
I think it might have been easier starting with the `standalone` document
class vs `article`, then you don't have to spend so much time on set-up. You
just have to make sure the tikz pictures are the right size, and standalone
will put each picture on a new page.

------
usaphp
Has anyone ever used QR codes on the business cards or store doors? It seems
like a waste of space, you need to have a special app on your phone to read
it. I think most people don't use that.

~~~
joemi
As an iOS user, I always assumed QR code reading was just built into Android's
camera app. Is that not so?

~~~
user5994461
Nope. Can't read QR code an android out of the box.

You need to get 1 out of 100 applications from the app store, that competes
for the one who can shows the most ads and be the least effective at decoding
the picture.

Are you saying that the iPhone camera can read QR code out of the box?

~~~
wtbob
> You need to get 1 out of 100 applications from the app store, that competes
> for the one who can shows the most ads and be the least effective at
> decoding the picture.

The ZXing Barcode Scanner doesn't show any ads. IIRC, they give it away for
free because they want people to use their (open source, natch) barcode
library. I've been very happy with it.

This of course demonstrates a problem with the App Store model: neither Google
nor Apple has a _strong_ incentive or interest in directing users to the best,
most secure, most privacy-preserving apps (particularly Google, who would
prefer that privacy become a thing of the past): they would much rather that
you buy something, or use some ad-ridden piece of nearly malware.

~~~
amk_
Yeah, I find it so strange that the Google Authenticator setup includes a step
to download a recommended 3rd-party scanner scanner, given that GA is pretty
much the most important app security-wise you can install on the phone.

~~~
pYQAJ6Zm
I ditched GA after I tried Authy. Built-in QR scanner, plus syncing with non-
mobile devices.

------
user5994461
Business Tip: ALWAYS use a white background on a business card (or at least,
leave one side empty full white).

People will write and take notes on the card. Can't take note on a dark
background.

~~~
deerpig
I completely agree and would add that your name, telephone number and email
address should be a large enough font that people don't have to take out their
reading glasses or squint to read it.

------
bcarlton0
Mine is a PCB (Printed Circuit Board). I designed it with KiCAD. Open source
CC-BY-NC-
SA.[https://github.com/bdc0/businesscard](https://github.com/bdc0/businesscard)

~~~
err4nt
I took graphic design in school (so I've seen plenty of business card
concepts) and I just wanted to say that's the most creative card I've seen in
years! I'd cherish something like that if you gave it to me - no matter how
much they cost the impact is definitely worth it. Wow!

~~~
bcarlton0
You aren't the only one who likes it; it definitely gets noticed. They cost
~$1 (US) in quantity.

The most common question I get is "If I install the chips, what do I get?"
Unfortunately, the answer is nothing. There are people who have done that.

------
amelius
You don't need an advanced text formatting system to design a business card.
Any system that allows you to place short strings of text at any desired (x,y)
position will do just fine. In fact, such a simple system might be better at
not getting in your way.

~~~
NegativeK
The author addresses this in the second paragraph.

> I picked LaTeX because I want to have a platform independent implementation
> and because why not? I really like making LaTeX documents, so this seemed
> like something other than creating long documents.

------
TwoBit
Serious question: Is LaTeX used outside academia these days?

~~~
rev_bird
I'm finishing up a 350+ page family history book that I wrote in LaTeX; I've
got two or three more to go, and I wouldn't consider using anything else. It's
got its quirks, but it was so easy to work with page formatting,
footnotes/endnotes, and sections that it made up for all the fiddly issues I
ran into with images. I have also been using the genealogytree[0] package
(which relies on TikZ, coincidentally used by OP) to draw diagrams
programatically. In addition to satisfying my scripting itch, it looks
beautiful despite my unlearned eye for graphic design.

Related: I wrote a resume in LaTeX a few years ago. After an in-person
interview, the manager took me to meet the team: When we walked in, they were
crowded around a monitor arguing about figure out how I'd made such a cool-
looking CV. It probably didn't actually look all that good, but anything that
isn't Word stands out nowadays.

~~~
graycat
For longer documents in TeX, I wrote a collection of TeX macros for to make
cross referencing easy. The collection was a little tricky to write but is
fairly easy to use and works great. The package is based on some _logical
names_ that serve as, say, _pointers_ ; then in one place define such a name
and in other places refer to it and get the page number, etc. inserted where
the reference is made. Given some simple examples, it's really easy to use. I
have a simple macro for my favorite text editor that will create a new, the
next according to one scheme, such logical name. Having an easy way to have
cross references is nice.

I also have something similar but simpler for bibliographic references.

TeX, some TeX macros, a good text editor with a good macro language (e.g.,
KEdit), and a good spell checker (e.g., ASpell with the last TeX distribution
I got) are super good writing tools to have.

~~~
pmoriarty
Your cross-referencing macros sound interesting. Are they publicly available
anywhere?

~~~
graycat
Available? See the next three posts.

Offered as-is, no warranties. Use at own risk.

They work nicely for me. I haven't looked at the code in years, so there may
be some dependencies, likely minor, maybe just in documentation, on some of my
other macros.

There may be some subtle bugs, but I haven't found any. If you find a bug and
know just what usage encounters the bug, then don't do that usage again! Or
fix the bug!

There is enough documentation so that you can see the ideas -- actually they
are all quite simple. The macros were a good TeX exercise.

~~~
graycat
Part II

    
    
         \newread\XREFileIn
          % \message{\string\XREFileIn = \the\XREFileIn}
          \newwrite\XREFileOut
          %
          \newcount\SNChapter
          \newcount\SNUnit
          \newcount\SNTable
          \newcount\SNFigure
          %
          \SNChapter=0
          \SNTable=0
          \SNFigure=0
          %
          \def\SNChapterPrefix{}
          %
          \def\TrimTag#1 {#1}          % For trimming trailing blanks.
          \def\First#1 #2 #3 {#1}      % Parsing first token.
          \def\Second#1 #2 #3 {#2}     %   "     second "
          \def\Third#1 #2 #3 {#3}      %   "     third  "
          \def\SNUNone{CH UN PG}       % Value for tags before there is an XRF file.
          \def\SNTNone{TB JUNK PG}     % Value for tags before there is an XRF file.
          \def\SNFNone{FG JUNK PG}     % Value for tags before there is an XRF file.
          \def\SNPNone{PT JUNK PG}     % Value for tags before there is an XRF file.
          %
          \def\SNUAdvanceChapter{\advance\SNChapter by1
          \SNUnit=0}
          %
          % Define a 'chapter' tag:
          %
          % Need a \global on \advance because might have the \SNC from
          % within a group, e.g., {\bf \SNC ...}.
          %
          \def\SNC#1{{\global\SNUnit=0
          \write\XREFileOut{\string#1}%
          \def\JUNKA{\SNChapterPrefix\the\SNChapter\space JUNK}%
          {\edef\JUNKB{\write\XREFileOut{\JUNKA}}\JUNKB}%
          \write\XREFileOut{\the\count0}}}%
          %
          % Define a 'unit' tag:
          %
          % To be more sure page number is correct, add text to list
          % BEFORE writing page number to XRF file.  In principle could
          % do the same for \SNT and \SNF but from how these are used in
          % practice a page number error would be nearly impossible.
          %
          \def\SNU#1{{\global\advance\SNUnit by1
          \write\XREFileOut{\string#1}%
          \SNChapterPrefix\the\SNChapter.\the\SNUnit
          \def\JUNKA{\SNChapterPrefix\the\SNChapter\space\the\SNUnit}%
          {\edef\JUNKB{\write\XREFileOut{\JUNKA}}\JUNKB}%
          \write\XREFileOut{\the\count0}}}%
          %
          % BEGIN Modified at 04:16:31 on Tuesday, December 29th, 2015.
          %
          %    In this collection, we now have a new
          %    macro
          %
          %         \SNP -- Sequentially Number Pointer
          %
          %    This macro intended for cross
          %    referencing to a place in text, that
          %    is not specifically to a 'unit'
          %    (definition, theorem), table, or
          %    figure.
          %
          %    In short, can have
          %
          %         Note\SNP{\SNTagCU}
          %         that, for $a, b \in R$ and
          %
          %    which will define tag \SNTagCU but
          %    insert nothing into the document.
          %
          %    Then elsewhere can have
          %
          %         Since as on page
          %         \SNCGetPage{\SNTagCU}
          %         an inner product is bilinear,
          %
          %    which will insert into the document
          %    the page number of the page where the
          %    macro \SNTagCU was defined.  Many
          %    more details below:
          %
          %    The macro \SNP is part of this
          %    package of cross referencing and
          %    sequential numbering but does not
          %    actually 'number' or 'sequentially
          %    number' anything.  We start the name
          %    of \SNP with 'SN' just to regard
          %    macro names of the form SNx as
          %    'reserved' in own TeX usage.
          %
          %    Then elsewhere in the document, can
          %    refer to that place by its page
          %    number, chapter number (apparently
          %    with its chapter prefix), etc.
          %
          %    E.g., if give a little discussion of,
          %    say, bilinear, can type, say,
          %
          %         Note\SNP{\SNTagCU}
          %         that, for $a, b \in R$ and
          %
          %    and that will just 'define' tag
          %    SNTagCU.  Of course the tag SNTagCU
          %    was likely from running own KEdit
          %    macro isntag to find the new tag name
          %    SNTagCU and insert it in the argument
          %    of the macro \SPP. That is, in KEdit
          %    we would have line
          %
          %         Note\SNP{}
          %
          %    current, run KEdit macro isntag, and
          %    get a new tag found an inserted to
          %    have something like
          %
          %         Note\SNP{\SNTagCU}
          %
          %    Then elsewhere in the document can
          %    write, say,
          %
          %         Since as on page
          %         \SNCGetPage{\SNTagCU}
          %         an inner product is bilinear,
          %
          %    and get the page number of the page
          %    in the document with
          %
          %         Note\SNP{\SNTagCU}
          %
          %    that is, where tag \SNTagCU was
          %    defined.
          %
          %    So, the lines
          %
          %         Note\SNP{\SNTagCU}
          %         that, for $a, b \in R$ and
          %
          %    write to the XRF file the standard
          %    three lines that would be written by,
          %    say, macro \SNU. With those three
          %    lines, the first has the tag
          %
          %         \SNTagCU
          %
          %    the next line has chapter and unit
          %    and the third line has the page
          %    number, all for what was the case for
          %    that part of that page when the macro
          %    \SNP was run.
          %
          %    Then, macros
          %
          %         \SNUGetChapter\SNTagCU
          %         \SNUGetUnit\SNTagCU
          %         \SNUGetPage\SNTagCU
          %
          %    will all work fine to extract the
          %    data on, respectively, chapter, unit,
          %    and page and insert it into the
          %    document.  That is, there is no
          %    reason to have separate macros to
          %    extract and for macro \SNP.
          %
          %    Really the macro \SNP is just like
          %    macro \SNU except does not add 1 to
          %    SNUnit and does not insert into the
          %    document the chapter prefix, chapter
          %    number, and unit number.  So, where
          %    macro \SNP is used, nothing is
          %    inserted into the document; this is
          %    in contrast with, say, macro \SNU and
          %    is why need the new macro \SNT
          %

------
candeira
Vertical card layouts look cool, but they aren't very practical for people
with longer names or surnames.

To me this design seems right if you're English or Chinese, but try using it
with your Greek or Basque name, or with the Spanish tradition of double
(maternal and paternal) surnames.

------
letientai299
Off topic. Recently I have rebuilt my CV in LaTeX and I want to share it with
you here:

[https://github.com/letientai299/cv](https://github.com/letientai299/cv)

------
rangibaby
Looks nice but:

Hex colors don't map to CMYK at all. Your printer may be able to use a non-
CMYK color using a special ink but that may cost more.

There are no crop marks or bleed. You'll want to add them.

~~~
sokoloff
Those particular RGB colors map well into the CMYK gamut and will be readily
printed by any competent printer using a 4-color process.

[https://support.dma.ucla.edu/help/tutorials/print_color_guid...](https://support.dma.ucla.edu/help/tutorials/print_color_guide.pdf)
has more information on the two color spaces' overlap.

The front side design is very tolerant of inherent printing tolerances, but
the backside design is poor (in that it will highlight, rather than hide, the
inherent tolerances in cutting). The human eye can readily see the difference
in thickness of the white border. A far more tolerant design would take the
green fill all the way to the edge. It's not the end of the world to have the
backside of your business card have slightly uneven margins, but if you're
equally happy with a full fill (and you bleed it beyond the cut lines), you'll
never end up with a visibly bad cut.

~~~
rangibaby
Wow! Thanks for that link. It matches with my experience over the years. I
think choosing in-gamut colors to start is a good practice though. It saves
frustration later on.

Otherwise agreed on all points. Nice post!

~~~
sokoloff
NP. I do have a fair amount of relevant experience in the space: almost 14
years working for what is almost surely the highest volume seller of business
cards online. ;)

------
graycat
I've done all my business cards in TeX, just Plain TeX, not LaTeX, for years.

It's just a simple TeX exercise.

I have the spacing so that the printing goes to some standard card stock for
business cards with the positioning just right. Then bending the printed card
stock results in a stack of business cards. Works great. Simple.

~~~
drivingmenuts
So your business cards have fuzzy edges from the perforations?

That just screams amateur.

------
janci
What an horrific idea to make an accidental horizontal swipe on a mobile
device make the page jump to the top!

~~~
preek
Horizontal swiping on my iPhone does what it's usually doing.

~~~
fhars
For me it even jumped to the top if I was not extremely careful and conscious
when scrolling vertically, never even made it to the end of the description of
the front side before giving up in desperation.

------
gellman
I would love to use this to design my lab badges as well :)

~~~
jilljennV
What about [http://tex.stackexchange.com/questions/67746/combining-
paths...](http://tex.stackexchange.com/questions/67746/combining-paths-before-
making-them-double/68415)?

------
klaudioz
I have a problem trying to generate the document with: xelatex src/front.tex

It is generated but without icons. If I see the file front.log I think it's
trying to write the icons using Fira Sans:

    
    
      Missing character: There is no  in font Fira Sans/OT:script=latn;language=DFLT;mapping=tex-text;!
    

(The line shows 9 times and there are 9 icons too)

I tried everything but I have never used before Latex, so it's really
complicated. Any comment will be very welcome.

Thanks.

------
ptrptr
Let's put it that way - Patrick Bateman would not be impressed by this design,
otherwise commandable effort!

------
DonaldFisk
I made mine using LaTeX for VL/HCC 2016. It's on
[http://web.onetel.com/~hibou/blog/VLHCC2016.html](http://web.onetel.com/~hibou/blog/VLHCC2016.html)

I repeated enough times to fill a page, printed it, and cut the cards.

~~~
seanmcdirmid
Nice environment! But...why do justified on a webpage?

~~~
DonaldFisk
Thanks.

I think the pages look better when justified. Also, the width is about the
same as a typical book, so you don't have to move your eyes much when reading
it.

~~~
seanmcdirmid
So since this about latex it feels appropriate to point this out. Justified
works well when you have auto word hyphenation turned on, and your layouts are
fixed. Web doesn't do word hyphenation (I think?), so the words have odd
spacing between them, it sort of stands out right away. Justification works in
latex because of word breaking, but even then one has to manually fix
underfilled or overfilled lines (I.e. by slightly changing word usage). For
web content where you have less control over these things (as opposed to
printing for a fixed layout via PDF), ragged right often works better.

~~~
DonaldFisk
So when there are large gaps between the words on a line, I should experiment
with manual hyphenation until it looks better?

~~~
evincarofautumn
CSS3 has automatic hyphenation (hyphens: auto) which you can tweak with manual
soft-hyphens (&shy;), and there are client-side hyphenators (Hyphenator.js,
Hypher) available as fallbacks.

~~~
seanmcdirmid
This is nice to know! Still, unless the formatting is fixed (by distilling to
PDF), there is no way to deal with the under and overflows that arise from an
aggressive (and hence decent looking type setter).

------
apricot
Once I wrote a ten-line TeX program to add serial numbers to a large stack of
Scantron forms. It worked well enough, but that's when I learned that laser
printers are much less precise than I thought when it comes to positioning
relative to the edges of the paper.

------
pmoriarty
My favorite business card belongs to Kevin Mitnick.[1]

Can LaTeX do that?

[1] - [http://i.imgur.com/NxCZ32J.jpg](http://i.imgur.com/NxCZ32J.jpg)

------
slbenfica
Out of curiosity, what was the most beautiful thing you've seen designed/made
in LaTeX?

~~~
biofox
[http://tex.stackexchange.com/questions/1319/showcase-of-
beau...](http://tex.stackexchange.com/questions/1319/showcase-of-beautiful-
typography-done-in-tex-friends)

------
forrestthewoods
I have an iPhone. How do I scan a QR code? There's not a built in reader that
I know of?

------
rongway
Challenge - do the card in Asymptote

------
nnd
People still use business cards?

------
slbenfica
I bet Knuth wouldn't be happy to hear that LaTeX was used to design Business
Cards

~~~
graycat
First, Knuth did TeX, Plain TeX, and was not the primary force behind LaTeX.

Second, IIRC, Knuth did proudly use TeX to print dinner menu, invitations, or
some such.

~~~
adtac
>Knuth did proudly use TeX to print dinner menu

That's hilarious. Any sources on that?

That man is incredible.

~~~
graycat
I was typing quickly from memory. With _The TeXBook_ , on page 411 he has a
concert program; on page 248 he has a genealogy chart; on page 247 he has some
nicely formatted stock tables; on pages 233, 236-7 he has some recipe stuff
from Julia Child.

So, instead of a menu, I found a concert program and some recipes. Maybe there
is a menu in there someplace.

He also has an addressed envelope where he used his Metafont in some tricky
way to get something like a stamp. He might also be able to get from TeX with
Metafont the whatever they are called little boxes of geometric gibberish used
as identifiers.

I did some TeX macros for foils -- I get a nice box around each foil. Some
more macros I did let me do a simple drawing in, say, old Microsoft Photodraw,
include it in a picture in a TeX document, and then position TeX math as
annotation overlays on the drawing. So, I can, say, draw a right triangle and
put the standard Pythagorean theorem annotation on the figure. Can put darned
nearly any TeX expression as annotation. TeX is nice and for math nearly
essential.

~~~
throwayguestman
>little boxes of geometric gibberish used as identifiers

in which context?

~~~
sokoloff
I struggled to understand that as well. Couldn't tell if it was about USPS
barcodes (1) or QR codes (or other 2D barcodes) or something else?

[1] -
[https://www.neodynamic.com/Products/Help/BarcodeCF2.0/barcod...](https://www.neodynamic.com/Products/Help/BarcodeCF2.0/barcodes/Postnet02.gif)

~~~
graycat
I meant QR codes! I don't really know what they are!

