latex中英文字母大小写变换再讨论
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中英文字母大小写变换再讨论相关推荐
- latex中字母大小写转换实践
latex中字母大小写转换实践 要点概览 目的 实现常用的字母大小写转换,可以用于常规的字符串处理以及biblatex参考文献样式定义 全部大写/全部小写 句首大写(句首字母大写其它不变,句首字母大写 ...
- vim中字母大小写变换
学习,使用vim有一段时间了.今天用的时候要把一个单词的首字母变为大写,有很多种方法可以做到的,但是隐约记得有个快捷键可以做到的,但是是什么却想不起来了. 通过查阅帮助手册和网上各位高人的帖子,除了找 ...
- C语言将一字符串输入到数组(长度不超过80)后将其输出, 将其中的英文字母大小写互换后再将整个字符串输出。
题目 将一字符串输入到数组(长度不超过80)后将其输出, 将其中的英文字母大小写互换后再将整个字符串输出. 代码 # include <stdio.h> # include <str ...
- C++字母大小写转换方法
字母大小写这个问题相对比较简单,总结了一些常用的大小写转换的方法,欢迎指正补充! 思路1:根据字母的ASCII表进行转换: 由表格可以看出,对应大小写字母之间相差32,由此可以衍生出以下编程的思路: ...
- 英语字母表计算机,计算机汇编课程设计CCCC.pdf_给定一个英文ascii码文件,统计文件中英文字母的频率,以十进制形式输出。,wwwwwxxxxx...
1.给定一个英文ASCII码文件,统计文件中英文字母的频率,以十进制形式输出. 2.用递归计算n!(n≥50), 以十进制数输出 输入一个不小于50的整数n,用递归计算n!, 以十进制数输出 3.存储 ...
- PTA:Python字符串字母大小写转换
第3章-14 字符串字母大小写转换 (15分) 本题要求编写程序,对一个以"#"结束的字符串,将其小写字母全部转换成大写字母,把大写字母全部转换成小写字母,其他字符不变输出. 输入 ...
- python判断字母左右两边的大写字母有_python习题,,1.26个字母大小写
python习题,,1.26个字母大小写 1.26个字母大小写成对打印,例如:Aa,Bb...... 2.一个list包含10个数字,然后生成一个新的list,要求新的list里面的数都比之前的数多1 ...
- 首字母大写转换 java,Java InitialsTransformation(字符串首字母大小写转换)
版权声明:本文为原创博文,最终解释权归一个集 帅气 与 智慧 和 手速 于一身的男人-灭世奶神-所有!- - - - - - - - - - - - -转载:请附上--源作者 / 源博文--相关链接信 ...
- leetcode784题:字母大小写全排列
题目描述: 给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串.返回所有可能得到的字符串集合. 示例: 输入:S = "a1b2" 输出:[&quo ...
最新文章
- weblogic集群安装心得-程序包发布
- oracle和MySQL的日期函数_mysql与oracle的日期/时间函数小结
- OBJC依赖库管理利器cocoapods 安装及使用详细图解
- ubuntu解压zip文件乱码问题
- 【java基础知识】java打包后再dos命令行中文显示乱码的问题
- sbt 地址修改备注
- Restful/Soap风格比较
- python能做的java能做吗_java – Jython不能做什么Python?
- listview优化方案
- 墨者学院 - 零基础学习手工SQL注入
- Yaml读写--SnakeYaml
- 7-6 分支结构——大小写字母判断 (15 分)
- Centos7局域网上共享文件夹(Samba服务)
- 量化投资与数据分析一: 如何用PYTHON下载WIND数据并转化成dataframe格式 分享
- bootStrap dropdown button
- NASA全新全球30M DEM任意下载!附7省2.7G数据
- IC卡历史及分类命名
- 3G入门教程--通讯基础
- 大话设计模式(更新ing...)
- 1号店两年即被资本俘获 创始人离开仅是时间问题