我正在寻找一个命令,它可以获取文本并以不同的格式打印首字母:
\first{Hello, world!}
应该变成:
\textbf{\large H}ello, world!
是否有一个包可以做到这一点?
答案1
如果唯一担心的lettrine
是破坏你的拼写检查器,那么只需将其捆绑在另一个宏中\first
。
PDFLATEX
由于 OP 在另一条评论中询问了 pdflatex,我引入了\pervyy
,它捆绑了构成西里尔字符的 2 字节字母序列,以便在 中使用\lettrine
。
\documentclass{article}
\usepackage{lettrine}
\usepackage[T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english, russian]{babel}
\newcommand\first[1]{\firstaux#1\relax}
\def\firstaux#1#2\relax{\lettrine{#1}{#2}}
\newcommand\pervyy[1]{\pervyyaux#1\relax}
\def\pervyyaux#1#2#3\relax{\lettrine{#1#2}{#3}}
\begin{document}
\first{This} is a test of using\\
lettrine without breaking \\
the spell-check features.
\pervyy{Привет,} мир!
\end{document}
LUALATEX 或 XELATEX
如果想要使用 pdflatex 以外的引擎,则省略编码T2A
,加载支持西里尔字母的适当字体,然后只需使用\first
,而不管使用哪种字母表:
\documentclass{article}
\usepackage{fontspec}
\setmainfont{EB Garamond} % choose a suitable text font
\usepackage{lettrine}
\usepackage[utf8]{inputenc}
\usepackage[english, russian]{babel}
\newcommand\first[1]{\firstaux#1\relax}
\def\firstaux#1#2\relax{\lettrine{#1}{#2}}
\begin{document}
\first{This} is a test of using\\
lettrine without breaking \\
the spell-check features.
\first{Привет,} мир!
\end{document}
答案2
如果您愿意并且能够使用 LuaLaTeX 编译您的文档,那么以下解决方案可能会引起您的兴趣。
% !TEX TS-program = lualatex
\documentclass{article}
\usepackage{fontspec}
\setmainfont{EB Garamond} % choose a suitable text font
\usepackage{luacode} % for "\luaexec" macro
\luaexec{
function first ( s )
local t
t = "\\textbf{\\large " .. unicode.utf8.sub(s,1,1) .. "}"
tex.sprint ( t .. unicode.utf8.sub(s,2) )
end
}
\newcommand\first[1]{\luaexec{ first ( "#1" ) }}
\begin{document}
\first{Hello, world!}
\first{Привет, мир!}
\end{document}