为什么乳胶认为已经是明天了?

为什么乳胶认为已经是明天了?

这里有一个奇怪的问题:

Brandon@forge ~/Dropbox/research.local/oil
$ date
Tue, Nov 27, 2012  6:14:23 PM

Brandon@forge ~/Dropbox/research.local/oil
$ cat <<EOF | pdflatex
\documentclass{article}
\begin{document}
\today
\end{document}
EOF

给我一个文档,内容是“2012 年 11 月 28 日”。
现在,我猜想这与区域设置或时区有关 - 但为什么 TeX 内部与命令行中的内容会有所不同?

值得一提的是:我在 Windows 7 和 TeX Live 2012 上运行 Cygwin。

答案1

一提到TZ环境变量,它似乎就是罪魁祸首,尤其是当您运行的是 Windows 版 TeX Live 而不是 cygwin 版时(这完全是合理的,所以希望这是它导致的唯一问题)。我相信 Windows 和 cygwin 对该变量的解释不同,并且当从 cygwin 会话运行 Windows 二进制文件时,cygwin 环境会被继承。大概在您的系统上 cygwin 之外,TZ未设置该变量。

因此,为了确保正确解释时间,您需要TZ在使用本机 Windows 二进制文件(例如 TeX Live 二进制文件)之前取消设置变量。为了避免全局取消设置变量(这肯定在 cygwin 中用于其他需要的用途),也许可以考虑使用bash别名,例如alias pdflatex="TZ= pdflatex"


为了尝试回答您关于在哪个 TZ 值中使用的后一个问题cygwin官方时区数据库在条目前有以下文本America/Los Angeles

# US Pacific time, represented by Los Angeles
#
# California, northern Idaho (Benewah, Bonner, Boundary, Clearwater,
# Idaho, Kootenai, Latah, Lewis, Nez Perce, and Shoshone counties,
# and the northern three-quarters of Idaho county),
# most of Nevada, most of Oregon, and Washington

相关内容