如何以不同的方式格式化单词的首字母?

如何以不同的方式格式化单词的首字母?

我正在寻找一个命令,它可以获取文本并以不同的格式打印首字母:

\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}

相关内容