以两种不同的方式编写章节和标题

以两种不同的方式编写章节和标题

我怎样才能将标题中每个单词的首字母大写?

也就是说我想正常地写标题

\chapter{Title of my chapter}

并以这样的方式

Title Of My Chapter

我读过了这次讨论但我无法根据我的情况修改该解决方案。

答案1

已故的 AMS 的 Michael J Downes开发了一个很棒的软件包inicap。它曾经是软件包的一部分amsrefs,但不幸的是不再分发了。您可以下载inicap.dtx从 AMS FTP 服务器获取过时的软件,或者您可以执行使用 Google 搜索latex inicap.sty来获取它。

inicap不将所有单词大写。“a”、“an”、“the”、“and”等单词不大写;事实上,这是正确的做法。摘自《芝加哥格式手册》,其中介绍了英语书面作品标题的大写:

除冠词、并列连词和介词或不定式中的 to 之外,每个单词(包括代词和从属连词)的首字母均应大写。标题的首字母和尾字母以及标题所含副标题的首字母和尾字母均应大写。带连字符的复合词中的第二个或后面的单词不要大写,除非它是名词或专有形容词,或者其效力与第一个单词相同。

请注意,inicap不要更改内联数学或插入的宏

\inicap{title of my chapter}

将排版为

Title of My Chapter

编辑:要更改所有章节,您可以重新定义章节命令:

\usepackage{inicap}
\let\oldchap=\chapter
\renewcommand\chapter{\secdef\mychap\myschap}
\def\myschap#1{\oldchap*{\inicap{#1}}}
\def\mychap[#1]#2{%
    \oldchap[\inicap{#1}]{\inicap{#2}}}

答案2

我不知道您是否正在使用 LuaLaTeX,但这里有一种使用 LuaLaTeX 的方法:

将 lua 函数写在带有扩展名的单独文件中是一种很好的做法.lua。对于这个 MWE,我使用filecontents环境来为 lua 脚本提供一个额外的文件。

\documentclass{book}
\usepackage{filecontents}

\begin{filecontents*}{luaFunctions.lua}
function capitalize(input)
    --separate given string in words (separated by space)
    local split = string.explode(input, " ")

    for i,p in ipairs(split) do
        --make the first letter upper-case
        output, count = string.gsub(p, '^%l', string.upper)
        --print the word to TeX
        tex.print(output)
    end
end
\end{filecontents*}

% read the external lua file to declare the defined function,
% but without execute the Lua function
\directlua{dofile("luaFunctions.lua")}

% latex command to execute the lua function
\def\caps#1{\directlua{capitalize("#1")}}

\begin{document}
\noindent
\caps{Title of my chapter}\\
\caps{read the external lua file to declare the defined function}
\end{document} 

相关内容