这是一篇简单的记录。
最近在写 YTL 的过程中遇到这样一个子问题:需要定义一个函数 uint32_t func(uint32_t num)
,返回不小于 num
的最小的 2 的幂方。例如
1 | 1 == func(1); |
一开始我想了个用位运算的奇技淫巧,自我感觉还不错:
这是一篇简单的记录。
最近在写 YTL 的过程中遇到这样一个子问题:需要定义一个函数 uint32_t func(uint32_t num)
,返回不小于 num
的最小的 2 的幂方。例如
1 | 1 == func(1); |
一开始我想了个用位运算的奇技淫巧,自我感觉还不错:
去年,有人在群里提及:
在 macOS 上,同样是使用 STFangSong 字体,使用 LaTeXmk 编译出来的文档在 Windows 上查看会乱码,但使用 XeLaTeX 直接编译则正常。MWE 是:
1 | \documentclass{ctexbook} |
具体的编译命令分别是:
1 | latexmk -cd -f -xelatex -interaction=nonstopmode -synctex=1 --output-directory=output foo.tex |
这个问题直至近期查看了 XeLaTeX 的源码才得到了完整答案。
这是一篇简单的记录,缘起于有人在 XeLaTeX 中插入 .png
格式的图片,但提示 no boundingbox
。这与我的认知不同:这一错误通常只在 LaTeX 方式编译时才会出现,而且加上 bmpsize
宏包结合 DVIPDFMx
驱动就能解决。但这次问题出现在 XeLaTeX
下,我感到很奇怪,也引起了我的兴趣。
最近在写 YTL 中的字符串相关辅助函数。实现到 split
函数时,希望能够实现类似 Python 当中的 str.split
方法的功能。
If
sep
is not specified or isNone
, a different splitting algorithm is applied: runs of consecutive whitespace are regarded as a single separator, and the result will contain no empty strings at the start or end if the string has leading or trailing whitespace.
——https://docs.python.org/3/library/stdtypes.html#str.split
也就是说,在最基本的 split
的基础上,要添加两个功能:
前一个功能很好实现。将空白符保存在 const char* trim_chars = " \t\n\r\v\f"
当中,然后使用 std::string::find_first_not_of
以及 std::string::find_last_not_of
即可找到有效内容的起止位置,最后再 std::string::erase
一下就好了。
后一个功能也不复杂。但要写得优雅——最好是能利用上标准库的设施——就不那么容易了。
近日大概重拾了一点对 LaTeX 的兴趣,遇见这样一个问题:如何在 LaTeX 中实现缩印效果(即,将两页或更多页排版在一页纸上),并且实现水印效果的页码?