latex中英文字母大小写变换再讨论

在英文的习惯中,特别是标题等内容中,大小写有一些常用的习惯。
在latex中如果正常输入英文段落和语句,通常作者会注意使用这些习惯,因此通常不太会需要太多的字母大小写转换。
反而在参考文献中,由于bib文件中的文献条目通常由网络获取,各个网站的习惯格式并不相同,所以通常没有一个统一的规范。
所以在参考文献的格式化过程中会更多的涉及到大小写转换。

关于大小写转换实践,我之前的文章已经讨论过一次,见
latex中字母大小写转换实践,
Make the first letter of each word uppercase in sentence 。
这里是再梳理一下,并且提供一下统一的命令,命令主要借助biblatex,mfirstuc宏包实现。

英文习惯中的大小写样式

样式 说明 示例
Sentence case 句子模式(一个句子中除首字母大写外其它全部小写) The quick brown fox jumps over the lazy dog
Title case 标题模式(一个句子各单词首字母均大写) The Quick Brown Fox Jumps over the Lazy Dog
All caps 全大写(一个句子全部大写) THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
All lowercase 全小写(一个句子全部小写) the quick brown fox jumps over the lazy dog
Small caps 小大写字母模式(一个句子中除首字母大写外其它全部用smallcap字母) The quick brown fox jumps over the lazy dog

latex中的实现

latex提供了基础命令MakeUppercase、MakeLowercase,可以将整个句子进行大小写转换,且不考虑{}符号进行保护。
biblatex提供了MakeCapital和MakeSentenceCase,前者仅将句子首字母大写,后者除首字母大写外,也对剩余字母小写,支持{}符号的大小写保护。
mfirstuc提供了capitalisewords命令,可以将句子中所有的单词的首字母大写,不支持{}的保护,但可以用\MFUnocap命令进行保护。

为了方便使用,我们可以使用统一的命名方式来实现多种习惯大小写写法的命令,比如:

通过如下定义:

    \makeatletter\def\firstletterparse#1#2&{\def\strfirstletter{#1}\def\strotherletters{#2}}\newcommand{\MakeSmallcaps}[1]{%\expandafter\firstletterparse#1&\expandafter\MakeUppercase\strfirstletter\textsc{\strotherletters}%}%\textrm\newcommand{\MakeTitlecase}[1]{%\capitalisewords{#1}}\makeatother

可以提供了前述所有模式的大小写方式:

命令 说明 可实现样式
\MakeCapital{a small book of {SUN} rhyme} 一个句子中首字母大写,其字母不变 Sentence case
\MakeSentenceCase{a small book of {SUN} rhyme} 一个句子中除首字母大写外其它全部小写 Sentence case
\MakeTitlecase{a small book of {SUN} rhyme} 一个句子各单词首字母均大写 Title case
\MakeUppercase{a small book of {SUN} rhyme} 一个句子全部大写 All caps
\MakeLowercase{a small book of {SUN} rhyme} 一个句子全部小写 All lowercase
\MakeSmallcaps{a small book of {SUN} rhyme} 一个句子中除首字母大写外其它全部用smallcap字母 Small caps

示例

这里给出一个测试文档:

\documentclass{article}\usepackage{ctex}\usepackage[backend=biber]{biblatex}\usepackage{mfirstuc}\makeatletter\def\firstletterparse#1#2&{\def\strfirstletter{#1}\def\strotherletters{#2}}\newcommand{\MakeSmallcaps}[1]{%\expandafter\firstletterparse#1&\expandafter\MakeUppercase\strfirstletter\textsc{\strotherletters}%}%\textrm\newcommand{\MakeTitlecase}[1]{%\capitalisewords{#1}}\makeatother\begin{document}\MakeUppercase{a small book of {SUN} rhyme}\MakeLowercase{a small book of {SUN} rhyme}\MakeCapital{a small book of {SUN} rhyme}\MakeSentenceCase{a small book of {SUN} rhyme}\MFUnocap{of}\MakeTitlecase{a small book of {SUN} rhyme}\MakeSmallcaps{a small book of {SUN} rhyme}\end{document}

小结

如此,我们通过统一的命名实现英文习惯大小写方式,可以在biblatex参考文献样式中可以有非常多的应用。

enjoy!

latex中英文字母大小写变换再讨论相关推荐

  1. latex中字母大小写转换实践

    latex中字母大小写转换实践 要点概览 目的 实现常用的字母大小写转换,可以用于常规的字符串处理以及biblatex参考文献样式定义 全部大写/全部小写 句首大写(句首字母大写其它不变,句首字母大写 ...

  2. vim中字母大小写变换

    学习,使用vim有一段时间了.今天用的时候要把一个单词的首字母变为大写,有很多种方法可以做到的,但是隐约记得有个快捷键可以做到的,但是是什么却想不起来了. 通过查阅帮助手册和网上各位高人的帖子,除了找 ...

  3. C语言将一字符串输入到数组(长度不超过80)后将其输出, 将其中的英文字母大小写互换后再将整个字符串输出。

    题目 将一字符串输入到数组(长度不超过80)后将其输出, 将其中的英文字母大小写互换后再将整个字符串输出. 代码 # include <stdio.h> # include <str ...

  4. C++字母大小写转换方法

    字母大小写这个问题相对比较简单,总结了一些常用的大小写转换的方法,欢迎指正补充! 思路1:根据字母的ASCII表进行转换: 由表格可以看出,对应大小写字母之间相差32,由此可以衍生出以下编程的思路: ...

  5. 英语字母表计算机,计算机汇编课程设计CCCC.pdf_给定一个英文ascii码文件,统计文件中英文字母的频率,以十进制形式输出。,wwwwwxxxxx...

    1.给定一个英文ASCII码文件,统计文件中英文字母的频率,以十进制形式输出. 2.用递归计算n!(n≥50), 以十进制数输出 输入一个不小于50的整数n,用递归计算n!, 以十进制数输出 3.存储 ...

  6. PTA:Python字符串字母大小写转换

    第3章-14 字符串字母大小写转换 (15分) 本题要求编写程序,对一个以"#"结束的字符串,将其小写字母全部转换成大写字母,把大写字母全部转换成小写字母,其他字符不变输出. 输入 ...

  7. python判断字母左右两边的大写字母有_python习题,,1.26个字母大小写

    python习题,,1.26个字母大小写 1.26个字母大小写成对打印,例如:Aa,Bb...... 2.一个list包含10个数字,然后生成一个新的list,要求新的list里面的数都比之前的数多1 ...

  8. 首字母大写转换 java,Java InitialsTransformation(字符串首字母大小写转换)

    版权声明:本文为原创博文,最终解释权归一个集 帅气 与 智慧 和 手速 于一身的男人-灭世奶神-所有!- - - - - - - - - - - - -转载:请附上--源作者 / 源博文--相关链接信 ...

  9. leetcode784题:字母大小写全排列

    题目描述: 给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串.返回所有可能得到的字符串集合. 示例: 输入:S = "a1b2" 输出:[&quo ...

最新文章

  1. weblogic集群安装心得-程序包发布
  2. oracle和MySQL的日期函数_mysql与oracle的日期/时间函数小结
  3. OBJC依赖库管理利器cocoapods 安装及使用详细图解
  4. ubuntu解压zip文件乱码问题
  5. 【java基础知识】java打包后再dos命令行中文显示乱码的问题
  6. sbt 地址修改备注
  7. Restful/Soap风格比较
  8. python能做的java能做吗_java – Jython不能做什么Python?
  9. listview优化方案
  10. 墨者学院 - 零基础学习手工SQL注入
  11. Yaml读写--SnakeYaml
  12. 7-6 分支结构——大小写字母判断 (15 分)
  13. Centos7局域网上共享文件夹(Samba服务)
  14. 量化投资与数据分析一: 如何用PYTHON下载WIND数据并转化成dataframe格式 分享
  15. bootStrap dropdown button
  16. NASA全新全球30M DEM任意下载!附7省2.7G数据
  17. IC卡历史及分类命名
  18. 3G入门教程--通讯基础
  19. 大话设计模式(更新ing...)
  20. 1号店两年即被资本俘获 创始人离开仅是时间问题

热门文章

  1. 【狼窝乀野狼】Parallel浅尝辄止
  2. java之DNF坑爹的强化
  3. sed删除指定行的上一行
  4. Unity渲染层级关系
  5. 搜索文件的利器_Ava Find
  6. 修电脑,不求人。(大全 不看你一定会后悔一辈子)
  7. win10 硬盘100% 解决
  8. 【全网最全】 |MySQL EXPLAIN 完全解读
  9. 针对低端机KSM的优化
  10. 微信小程序服务器未响应,微信小程序点击事件失效