TransWikia.com

How to create a LATEX like logo using any word at hand?

TeX - LaTeX Asked on August 4, 2021

I want to create a logo like

enter image description here

using the word LECTURE.

I tried to edit Martin’s answer here but I was unable to do it. Any help?

3 Answers

The design expert in me tells me this looks awful, but it will give you a start:

enter image description here

There are three things you can do to make a logo like this:

  • you can kern, to move characters closer or further from each other;
  • you can raise or lower characters;
  • you can change their size (as the A in enter image description here).

The three above are available without driver dependent operations, like scaling or rotating. If you want to have those too:

  • you can also scale (or mirror, which is a special case of scaling, like the first E in enter image description here);
  • and you can rotate, for extra wackiness :)

Here I'll stick with the first three, but the other two are not hard to apply if you so wish.

kerning

You can use the kern primitive to move characters close to each other. You can write Akern-0.5em B to have the B move 0.5em towards the A, partially superimposing it. If you use a positive value, it will go further away. The unit em is defined (but not exactly!) as “roughly the width of an uppercase letter M in the current font”, so it is better to use em here as the exact amount it will move will depend on the actual width of the glyphs in the font, so if you use your symbol with a larger or smaller size, it should stay more or less correct. Note that the exact amount of kerning depends on the font used, to you might need to adjust.

raiseing or lowering

You can move characters (boxes, actually) up or down using the raise or lower primitives. The syntax is raise <dimension> <box>. The dimension is similar to kern, except here you'll prefer to use the unit ex, defined as “roughly the height of a lowercase letter x in the current font”, so it is an indication of the height of the glyphs. Also raise (and lower) need a box, so instead of Araise 0.5ex B you have to write Araise 0.5exhbox{B} to get the B slightly higher than the A.

Changing font size

The LaTeX logo selects the current script font size for the A (the same size as in math super/subscripts). You can use the same technique, or you can use the relsize package to change to a smaller or larger font size, or use the scalebox command. Though scaling might look bad if you overdo it.

I made the font size changing into a command logosmaller that makes the argument with the script size font, and aligns it with the top line of other characters:

deflogosmaller#1{%
  hbox{sboxz@ T%
    vbox tohtz@{hbox{check@mathfonts
      fontsizesf@sizez@
      math@fontsfalseselectfont #1}vss}}}

then you can use Llogosmaller{A} to make something similar to LaTeX.

Building the logo

newcommandlecture{%
  Lkern-.2em%
  logosmaller{E}kern-.1em%
  Ckern-.2em%
  raise0.5exhbox{T}kern-.23em%
  hbox{U}kern-.1em%
  lower0.1exlogosmaller{R}kern-.1em%
  E@}

The logo starts with L, then brings the next character closer by -0.2em.

  Lkern-.2em%

then it adds a smaller E, and brings C closer by -0.1em, and the T closer to C by -0.2em:

  logosmaller{E}kern-.1em%
  Ckern-.2em%

now we raise the T by 0.5ex, and bring the U and the R closer:

  raise0.5exhbox{T}kern-.23em%
  hbox{U}kern-.1em%

finally, make the R smaller and lower it, and at the end add the E and the spacefactor correction @:

  lower0.1exlogosmaller{R}kern-.1em%
  E@

then add the final E.


Here's a compilable example:

documentclass{article}

makeatletter
deflogosmaller#1{%
  hbox{sboxz@ T%
    vbox tohtz@{hbox{check@mathfonts
      fontsizesf@sizez@
      math@fontsfalseselectfont #1}vss}}}

begin{document}

newcommandlecture{%
  Lkern-.2em%
  logosmaller{E}kern-.1em%
  Ckern-.2em%
  raise0.5exhbox{T}kern-.23em%
  hbox{U}kern-.1em%
  lower0.1exlogosmaller{R}kern-.1em%
  E@}

Here's a lecture for you

end{document}

Correct answer by Phelype Oleinik on August 4, 2021

Just to entertain me on the first day of 2021 :D, how about this:

OutputOK

documentclass{article}
usepackage{relsize}
makeatletter
deflecture@ssize{larger[-3]scshape}
DeclareRobustCommand{lecture}{%
  mbox{%
    Lkern-0.37em
    raisebox{0.49ex}{lecture@ssize e}%kern-0.1em
    Ckern-0.53em
    raisebox{0.49ex}{lecture@ssize t}kern-0.05em
    raisebox{0.49ex}{lecture@ssize u}kern-0.12em%
    Rkern-0.1em
    raisebox{0.49ex}{lecture@ssize e}%
   }%
}
makeatother

begin{document}
Here's a lecture for you


{large Here's a lecture for you}


{Large Here's a lecture for you}

{LARGE Here's a lecture for you}

{huge Here's a lecture for you}

{Huge Here's a lecture for you}

end{document}

Adapted from an old response (https://tex.stackexchange.com/a/60515/7832 ) from the time I created my own logo.

Answered by Pablo González L on August 4, 2021

If one's too lazy to position letters by oneself and a semi-automatic alternative is needed, a broke man's solution is possible via MetaPost.

Disadvantages are: 1) because of random raising and lowering, outputs will be different, but one can choose a result and store it for later use, 3) it doesn't work well with non-ASCII string, 2) well, results are rather ugly, but beauty in the eye of the beholder.

Anyway, here's my approach:

documentclass{standalone}
usepackage[latex,shellescape]{gmp}
begin{document}
newcommand{uglylogo}[2][textwidth]{%
begin{mpost}[name=uglylogo]
vardef myuglylogo(expr s) =
    save len; len := length s;
    save Char; picture Char[];
    save Em; Em := 0;
    save Ex;
    for i = 1 upto len:
        Char[i] := image(label((substring(i-1,i) of s), origin);)  scaled (1-uniformdeviate(0.4));
        Ex := (ypart (ulcorner Char[i])) - (ypart (llcorner Char[i]));
        draw Char[i] shifted
        if (i mod 2 = 1):
            (Em,Ex*uniformdeviate(0.35))    
        else:
            (Em,-Ex*uniformdeviate(0.35))   
        fi;
        Em := Em + (xpart (urcorner Char[i])) - (xpart (ulcorner Char[i]));  
    endfor
enddef;
myuglylogo("#2");
end{mpost}%
usempost[width=#1]{uglylogo}%
}
vbox{
hbox{uglylogo[6cm]{LECTURE}}
hbox{uglylogo[6cm]{LECTURE}}
hbox{uglylogo[6cm]{LECTURE}}
hbox{uglylogo[6cm]{LECTURE}}
hbox{uglylogo[6cm]{LECTURE}}
hbox{uglylogo[6cm]{LECTURE}}
hbox{uglylogo[6cm]{LECTURE}}
}
end{document}

enter image description here

Answered by Jairo A. del Rio on August 4, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP