Last active
August 29, 2015 14:03
-
-
Save izabera/2b09ba766469ec996490 to your computer and use it in GitHub Desktop.
\mylettrine with utf8 capitals support and quotation marks / direct speech dashes
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
% !TEX encoding = UTF-8 Unicode | |
\documentclass{article} | |
\usepackage{lettrine} | |
\usepackage{luacode} | |
\usepackage{fontspec} | |
\usepackage[a4paper]{geometry} | |
\setmainfont{Adobe Caslon Pro} | |
\usepackage{multicol} | |
\usepackage{xcolor} | |
\usepackage{graphicx} | |
\usepackage{transparent} | |
\def\mylettrine#1 { | |
\luaexec{ | |
lettersmatrix = { | |
A = {'A','À','Á','Â','Ã','Ä','Å','Ā','Ă','Ą','Ǻ','Ȁ','Ạ','Ả','Ấ','Ầ','Ẩ','Ẫ','Ậ','Ắ','Ằ','Ẳ','Ặ','Α'}, | |
B = {'B','฿','Β'}, | |
C = {'C','Ç','Ć','Ĉ','Ċ','Č'}, | |
D = {'D','Ð','Ď','Đ','Ḍ','Ḏ'}, | |
E = {'E','È','É','Ê','Ë','Ē','Ĕ','Ė','Ę','Ě','Ȅ','Ẹ','Ẻ','Ẽ','Ề','Ế','Ễ','Ể','Ệ','Ε','Ǽ'}, | |
F = {'F'}, | |
G = {'G','Ĝ','Ğ','Ġ','Ģ','Ǧ','Ǵ'}, | |
H = {'H','Ĥ','Ħ','Ḥ','Ḧ','Ḫ','Η'}, | |
I = {'I','Ì','Í','Î','Ï','Ĩ','Ī','Ĭ','Į','İ','Ȉ','Ỉ','Ị','Ι'}, | |
J = {'J','Ĵ'}, | |
K = {'K','Ķ','Κ'}, | |
L = {'L','Ĺ','Ļ','Ł','Ḷ'}, | |
M = {'M','Μ'}, | |
N = {'N','Ñ','Ń','Ņ','Ň','Ṅ','Ṇ','Ν'}, | |
O = {'O','Ò','Ó','Ô','Õ','Ö','Ø','Ō','Ŏ','Ő','Ọ','Ơ','Ǫ','Ǿ','Ȍ','Ỏ','Ố','Ồ','Ổ','Ỗ','Ộ','Ớ','Ờ','Ỡ','Ở','Ợ','Ο'}, | |
P = {'P','Ρ'}, | |
Q = {'Q'}, | |
R = {'R','Ŕ','Ŗ','Ř','Ȑ','Ṛ','Ṙ','Ṝ'}, | |
S = {'S','Ś','Ŝ','Ş','Š','Ș','Ṣ'}, | |
T = {'T','Ţ','Ť','Ț','Ṭ','Ṯ','Τ'}, | |
U = {'U','Ù','Ú','Û','Ü','Ũ','Ū','Ŭ','Ů','Ű','Ų','Ư','Ȕ','Ụ','Ủ','Ứ','Ừ','Ử','Ữ','Ự'}, | |
V = {'V'}, | |
W = {'W','Ŵ','Ẁ','Ẃ','Ẅ'}, | |
X = {'X','Χ'}, | |
Y = {'Y','Ý','Ŷ','Ÿ','Ỵ','Ỷ','Ỹ'}, | |
Z = {'Z','Ź','Ż','Ž','Ẓ','Ζ'} | |
} | |
function find_letter (letter_to_find) | |
for key, value in pairs(lettersmatrix) do | |
for seckey, secvalue in pairs(lettersmatrix[key]) do | |
if secvalue == letter_to_find then | |
return key, seckey | |
end | |
end | |
end | |
end | |
function firstLetter(str) | |
return unicode["utf8"].sub(str,1,1) | |
end | |
function lastLetters(str) | |
return unicode["utf8"].sub(str,2) | |
end | |
param='\luatexluaescapestring{#1}' | |
ante='' | |
while unicode["utf8"].sub(param,1,1)=='`' do | |
temp=unicode["utf8"].sub(param,1,1) | |
ante=ante..temp | |
param=unicode["utf8"].sub(param,2) | |
end | |
while unicode["utf8"].sub(param,1,1)=='-' do | |
temp=unicode["utf8"].sub(param,1,1) | |
ante=ante..temp | |
param=unicode["utf8"].sub(param,2) | |
end | |
lettrine=firstLetter(param) | |
alltherest=lastLetters(param) | |
key,_=find_letter(lettrine) | |
valuesmatrix = { | |
A = {'1','7pt','-5pt','0'}, | |
B = {'1','0pt','0pt','0'}, | |
C = {'1','0pt','0pt','0'}, | |
D = {'1','-3pt','0pt','0'}, | |
E = {'1','0pt','0pt','0'}, | |
F = {'1','-2pt','-3pt','0'}, | |
G = {'1','0pt','0pt','0'}, | |
H = {'1','2pt','-2pt','0'}, | |
I = {'1','2pt','-2pt','0'}, | |
J = {'0.7','0pt','-2pt','0.4'}, | |
K = {'1','7pt','-5pt','0'}, | |
L = {'1','0pt','0pt','0'}, | |
M = {'1','2pt','-2pt','0'}, | |
N = {'1','0pt','-2pt','0'}, | |
O = {'1','-3pt','0pt','0'}, | |
P = {'1','-4pt','0pt','0'}, | |
Q = {'0.7','16pt','-1pt','0.5'}, | |
R = {'1','5pt','-3pt','0'}, | |
S = {'1','0pt','0pt','0'}, | |
T = {'1','0pt','-6pt','0'}, | |
U = {'1','0pt','-2pt','0'}, | |
V = {'1','-4pt','-4pt','0'}, | |
W = {'1','-4pt','-3pt','0'}, | |
X = {'1','7pt','-5pt','0'}, | |
Y = {'1','-1pt','-4pt','0'}, | |
Z = {'1','2pt','-2pt','0'} | |
} | |
tex.sprint("\string\\lettrine[ante="..ante..",loversize="..valuesmatrix[key][1]..",nindent="..valuesmatrix[key][2]..",findent="..valuesmatrix[key][3]..",lraise="..valuesmatrix[key][4].."]{"..lettrine.."}{"..alltherest.."} ") | |
}} | |
\definecolor{myred}{cmyk}{0.11,1,0.75,0.2} | |
\renewcommand{\LettrineFontHook}{\color{myred}\transparent{0.8}} | |
\begin{document} | |
\pagestyle{empty} | |
\centerline{\large Sample output of \texttt{\textbackslash mylettrine}} | |
\vspace{.5cm} | |
Just write \texttt{\textbackslash mylettrine This is an awesome paragraph}. The first letter will be \texttt{lettrine}-ized with (almost) correct kerning (I'm still working on it), and the first word will be in small caps. Supports \textsc{utf-8} capital letters. \textsc{Currently it only works with Adobe Caslon Pro} since I started with that one and kerning other fonts is totally different. Supports \LaTeX -style quotes and direct speech dashes. | |
\vspace{.5cm} | |
\begin{multicols}{2} | |
\mylettrine | |
ALorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor turpis at ligula tincidunt gravida. Etiam vel quam iaculis dolor dignissim mattis. Quisque magna magna, euismod quis eleifend et, porta eget justo. In hac habitasse platea dictumst. Pellentesque elementum ut velit at vehicula. | |
\mylettrine BLorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor turpis at ligula tincidunt gravida. Etiam vel quam iaculis dolor dignissim mattis. Quisque magna magna, euismod quis eleifend et, porta eget justo. In hac habitasse platea dictumst. Pellentesque elementum ut velit at vehicula. | |
\mylettrine CLorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor turpis at ligula tincidunt gravida. Etiam vel quam iaculis dolor dignissim mattis. Quisque magna magna, euismod quis eleifend et, porta eget justo. In hac habitasse platea dictumst. Pellentesque elementum ut velit at vehicula. | |
\mylettrine DLorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor turpis at ligula tincidunt gravida. Etiam vel quam iaculis dolor dignissim mattis. Quisque magna magna, euismod quis eleifend et, porta eget justo. In hac habitasse platea dictumst. Pellentesque elementum ut velit at vehicula. | |
\mylettrine ELorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor turpis at ligula tincidunt gravida. Etiam vel quam iaculis dolor dignissim mattis. Quisque magna magna, euismod quis eleifend et, porta eget justo. In hac habitasse platea dictumst. Pellentesque elementum ut velit at vehicula. | |
\mylettrine FLorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor turpis at ligula tincidunt gravida. Etiam vel quam iaculis dolor dignissim mattis. Quisque magna magna, euismod quis eleifend et, porta eget justo. In hac habitasse platea dictumst. Pellentesque elementum ut velit at vehicula. | |
\mylettrine GLorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor turpis at ligula tincidunt gravida. Etiam vel quam iaculis dolor dignissim mattis. Quisque magna magna, euismod quis eleifend et, porta eget justo. In hac habitasse platea dictumst. Pellentesque elementum ut velit at vehicula. | |
\mylettrine HLorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor turpis at ligula tincidunt gravida. Etiam vel quam iaculis dolor dignissim mattis. Quisque magna magna, euismod quis eleifend et, porta eget justo. In hac habitasse platea dictumst. Pellentesque elementum ut velit at vehicula. | |
\mylettrine ILorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor turpis at ligula tincidunt gravida. Etiam vel quam iaculis dolor dignissim mattis. Quisque magna magna, euismod quis eleifend et, porta eget justo. In hac habitasse platea dictumst. Pellentesque elementum ut velit at vehicula. | |
\mylettrine JLorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor turpis at ligula tincidunt gravida. Etiam vel quam iaculis dolor dignissim mattis. Quisque magna magna, euismod quis eleifend et, porta eget justo. In hac habitasse platea dictumst. Pellentesque elementum ut velit at vehicula. | |
\mylettrine KLorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor turpis at ligula tincidunt gravida. Etiam vel quam iaculis dolor dignissim mattis. Quisque magna magna, euismod quis eleifend et, porta eget justo. In hac habitasse platea dictumst. Pellentesque elementum ut velit at vehicula. | |
\mylettrine LLorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor turpis at ligula tincidunt gravida. Etiam vel quam iaculis dolor dignissim mattis. Quisque magna magna, euismod quis eleifend et, porta eget justo. In hac habitasse platea dictumst. Pellentesque elementum ut velit at vehicula. | |
\mylettrine MLorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor turpis at ligula tincidunt gravida. Etiam vel quam iaculis dolor dignissim mattis. Quisque magna magna, euismod quis eleifend et, porta eget justo. In hac habitasse platea dictumst. Pellentesque elementum ut velit at vehicula. | |
\mylettrine NLorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor turpis at ligula tincidunt gravida. Etiam vel quam iaculis dolor dignissim mattis. Quisque magna magna, euismod quis eleifend et, porta eget justo. In hac habitasse platea dictumst. Pellentesque elementum ut velit at vehicula. | |
\mylettrine OLorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor turpis at ligula tincidunt gravida. Etiam vel quam iaculis dolor dignissim mattis. Quisque magna magna, euismod quis eleifend et, porta eget justo. In hac habitasse platea dictumst. Pellentesque elementum ut velit at vehicula. | |
\mylettrine PLorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor turpis at ligula tincidunt gravida. Etiam vel quam iaculis dolor dignissim mattis. Quisque magna magna, euismod quis eleifend et, porta eget justo. In hac habitasse platea dictumst. Pellentesque elementum ut velit at vehicula. | |
\mylettrine QLorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor turpis at ligula tincidunt gravida. Etiam vel quam iaculis dolor dignissim mattis. Quisque magna magna, euismod quis eleifend et, porta eget justo. In hac habitasse platea dictumst. Pellentesque elementum ut velit at vehicula. | |
\mylettrine RLorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor turpis at ligula tincidunt gravida. Etiam vel quam iaculis dolor dignissim mattis. Quisque magna magna, euismod quis eleifend et, porta eget justo. In hac habitasse platea dictumst. Pellentesque elementum ut velit at vehicula. | |
\mylettrine SLorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor turpis at ligula tincidunt gravida. Etiam vel quam iaculis dolor dignissim mattis. Quisque magna magna, euismod quis eleifend et, porta eget justo. In hac habitasse platea dictumst. Pellentesque elementum ut velit at vehicula. | |
\mylettrine TLorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor turpis at ligula tincidunt gravida. Etiam vel quam iaculis dolor dignissim mattis. Quisque magna magna, euismod quis eleifend et, porta eget justo. In hac habitasse platea dictumst. Pellentesque elementum ut velit at vehicula. | |
\mylettrine ULorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor turpis at ligula tincidunt gravida. Etiam vel quam iaculis dolor dignissim mattis. Quisque magna magna, euismod quis eleifend et, porta eget justo. In hac habitasse platea dictumst. Pellentesque elementum ut velit at vehicula. | |
\mylettrine VLorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor turpis at ligula tincidunt gravida. Etiam vel quam iaculis dolor dignissim mattis. Quisque magna magna, euismod quis eleifend et, porta eget justo. In hac habitasse platea dictumst. Pellentesque elementum ut velit at vehicula. | |
\mylettrine WLorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor turpis at ligula tincidunt gravida. Etiam vel quam iaculis dolor dignissim mattis. Quisque magna magna, euismod quis eleifend et, porta eget justo. In hac habitasse platea dictumst. Pellentesque elementum ut velit at vehicula. | |
\mylettrine XLorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor turpis at ligula tincidunt gravida. Etiam vel quam iaculis dolor dignissim mattis. Quisque magna magna, euismod quis eleifend et, porta eget justo. In hac habitasse platea dictumst. Pellentesque elementum ut velit at vehicula. | |
\mylettrine YLorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor turpis at ligula tincidunt gravida. Etiam vel quam iaculis dolor dignissim mattis. Quisque magna magna, euismod quis eleifend et, porta eget justo. In hac habitasse platea dictumst. Pellentesque elementum ut velit at vehicula. | |
\mylettrine ZLorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor turpis at ligula tincidunt gravida. Etiam vel quam iaculis dolor dignissim mattis. Quisque magna magna, euismod quis eleifend et, porta eget justo. In hac habitasse platea dictumst. Pellentesque elementum ut velit at vehicula. | |
\mylettrine ÐLorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor turpis at ligula tincidunt gravida. Etiam vel quam iaculis dolor dignissim mattis. Quisque magna magna, euismod quis eleifend et, porta eget justo. In hac habitasse platea dictumst. Pellentesque elementum ut velit at vehicula. | |
\mylettrine ÀLorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor turpis at ligula tincidunt gravida. Etiam vel quam iaculis dolor dignissim mattis. Quisque magna magna, euismod quis eleifend et, porta eget justo. In hac habitasse platea dictumst. Pellentesque elementum ut velit at vehicula. | |
\mylettrine ËLorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor turpis at ligula tincidunt gravida. Etiam vel quam iaculis dolor dignissim mattis. Quisque magna magna, euismod quis eleifend et, porta eget justo. In hac habitasse platea dictumst. Pellentesque elementum ut velit at vehicula. | |
\mylettrine ---ÍLorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor turpis at ligula tincidunt gravida. Etiam vel quam iaculis dolor dignissim mattis. Quisque magna magna, euismod quis eleifend et, porta eget justo. In hac habitasse platea dictumst. Pellentesque elementum ut velit at vehicula. \emph{direct speech} | |
\mylettrine ``ŁLorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor turpis at ligula tincidunt gravida. Etiam vel quam iaculis dolor dignissim mattis. Quisque magna magna, euismod quis eleifend et, porta eget justo. In hac habitasse platea dictumst. Pellentesque elementum ut velit at vehicula.'' \emph{quotes} | |
\mylettrine `ŠLorem ipsum dolor sit amet, consectetur adipiscing elit. In tempor turpis at ligula tincidunt gravida. Etiam vel quam iaculis dolor dignissim mattis. Quisque magna magna, euismod quis eleifend et, porta eget justo. In hac habitasse platea dictumst. Pellentesque elementum ut velit at vehicula.' \emph{only one quote} | |
\end{multicols} | |
\end{document} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment