TeXShop (Mac)

TeXShop 是一个免费、开源、macOS-only TeX 环境,由 Richard Koch 编写。 Editor 和 PDF 预览并排位于一个窗口中,它与 MacTeX 捆绑,安装到 /Applications/TeX/ 中。它也是后来的 TeXworks 的原型。本页重点介绍一开始最重要的两件事:排版配置(哪个引擎编译您的文档)和SyncTeX,用于在源代码和 PDF 之间移动。

TeXShop 是什么

TeXShop 是一个仅限 macOS 的应用程序,由俄勒冈大学数学家 Richard Koch 自 2000 年左右开始开发;其许可证是GPLv2(免费软件)。它本身并不捆绑 LaTeX — 它通过在后台启动单独安装的 TeX 发行版(pdflatexlualatexlatexmk 等)的命令来工作。在 Mac 上,MacTeX 将 TeX 引擎 (TeX Live) 和 TeXShop 一起安装,因此它的极大便利在于您无需额外设置即可开始使用它。

MacTeX-2026 携带 TeX Live 2026 并将其 GUI 应用程序(TeXShop 以及 TeX Live UtilityLaTeXiTBibDeskhintView)放置在 /Applications/TeX/ 文件夹中(TeX 引擎本身位于 /usr/local/texlive/2026/ 下)。 MacTeX-2026 在 Intel 和 Apple Silicon 上支持 macOS 11 Big Sur 及更高版本,当前的 TeXShop(v5.57,2025 年 10 月)从 High Sierra 运行到 Tahoe——这是一个长期稳定的可靠选择。特别是对于 macOS 26 Tahoe,TUG 还提供了一个特殊的 TeXShop 5.58,具有 Liquid Glass 支持,于 2026 年 3 月 2 日与 MacTeX-2026 一起发布。

TeXShop 也被称为后来的跨平台 TeXworks 直接建模的编辑器。两者有着相同的直接感觉——源代码在左边,PDF在右边,一个Typeset按钮在顶部进行编译——所以学习TeXShop几乎不会改变TeXworks。

排版配置

TeXShop 的核心是窗口顶部的 Typeset 按钮。按下它(或 ⌘T),文档将使用当前引擎编译,并且 PDF 出现在右侧。要在重新编译之前清除中间文件,请使用 ⌥⌘T(垃圾箱 AUX 和 Typeset)。从排版按钮右侧的**弹出菜单中选择编译文档的引擎。

此弹出列表列出的是引擎。默认情况下,您可以选择 LaTeX (通过 latexdvipsps2pdf 路线生成 PDF)、pdfLaTeXLuaLaTeXXeLaTeX 等。这些由真实文件支持:TeXShop 读取 ~/Library/TeXShop/Engines/ 文件夹中的 .engine 文件并将每个文件显示为菜单项。换句话说,每个引擎都是一个简短的 shell 脚本,可供您自由添加或修改。

特别方便的是调用构建工具 latexmk 的引擎系列。通过 pdflatexmklualatexmkxelatexmklatexmk 自动处理参考书目、索引和交叉引用所需的重新运行,因此一次排版即可完成 PDF。相比之下,不使用 latexmk 的引擎(例如普通 LuaLaTeX)可能需要您在交叉引用和目录稳定之前按排版两次或三次。在 TeXShop 内部,这些 *latexmk 引擎最初位于 Engines/Inactive/Latexmk/;要使用其中一个,请将其移至 Engines/ 并重新启动 TeXShop。

您在弹出窗口中选择的引擎是该文档的临时选择。要将引擎设置为默认引擎,请打开TeXShop→首选项→排版并在**“默认命令”下设置所需的引擎(例如pdfLaTeX或LuaLaTeX)。从那时起,新文档将使用该引擎进行编译。

Mac 上的三种设置

安装MacTeX和TeXShop后,您可以立即开始写入。不过,对于日本的报告和论文,在手稿增长之前解决编码、默认引擎和重新运行处理是值得的。

  • 在“源”选项卡中,将默认编码设置为 Unicode (UTF-8)。
  • 在“排版”选项卡中,选择日常引擎:用于新的日语项目的 LuaLaTeX,或用于继承模板的 upLaTeX 系列。
  • 对于包含目录、交叉引用或参考书目的文档,请使用 latexmk 引擎自动重新运行。
  • 当稿件需要不同的设置时,请将它们用 % !TEX TS-program% !TEX encoding 固定在文件顶部。

稳定的Mac手稿基线

因为 TeXShop 可以立即与 MacTeX 一起使用,所以很容易开始编写,而无需考虑配置。对于较长的日语手稿,在基线上花费最初几分钟会在以后得到回报:使条目文件、引擎和编码明确,并使用 latexmk 引擎自动重新运行。

latex
% !TEX TS-program = lualatexmk
% !TEX encoding = UTF-8 Unicode
\documentclass{ltjsarticle}
\begin{document}
\section{はじめに}
本文を書き始めます。
\end{document}
  • 对于新的日语手稿,请尽早在 LuaLaTeX 路线和 upLaTeX 路线之间进行选择。
  • 如果文档有目录、交叉引用或参考书目,请使用 lualatexmkpdflatexmk 或类似的引擎,而不是一次性引擎。
  • 如果继承的模板假定为 upLaTeX,请遵循该模板,而不是强制进行 LuaLaTeX 迁移。
  • 在拆分子文件之前,请确认 main.tex 单独生成一次 PDF。

每个文件指令(% !TEX 行)

要确定每个文档的引擎或字符编码,放置在文件顶部的 % !TEX 行(魔术注释)很方便。对于 LaTeX 来说,它们只是注释(% 之后的所有内容都将被忽略),但 TeXShop 会读取它们并调整其行为。常用的有以下三种:

指示它的作用
% !TEX root命名包含此文件的父文件,因此通过 \input/\include 排版拆分出的子文件来构建主文件
% !TEX TS-program命名编译此文档的引擎(程序); % !TEX program 也可以
% !TEX encoding指定该文档的字符编码;它会覆盖默认的保存编码

例如,将这一行放在文档顶部只会使该文档使用 LuaLaTeX 进行编译,而不管弹出窗口选择如何。该值只是一个引擎名称(Engines/.engine 的名称):

latex
% !TEX TS-program = lualatex
% !TEX encoding = UTF-8 Unicode
\documentclass{article}
\begin{document}
Hello, \LaTeX!
\end{document}

编码值得关注。当前的 TeXShop 附带了出厂默认编码 IsoLatin9,因此按原样保存日语会出现乱码。最安全的方法是在 首选项 → 源 选项卡的编码部分中将默认值更改为 “Unicode (UTF-8)”,或者如上所述将 % !TEX encoding = UTF-8 Unicode 写入每个文件中。

日语引擎设置

对于日本人来说,有两条主要道路。一个是LuaLaTeX:它直接处理Unicode并且可以使用系统的字体,这使得它成为新开始的直接选择。只需在弹出窗口中选择 LuaLaTeX(或 lualatexmk,它会自动运行完成)。要使新文档始终使用日语 LuaLaTeX,请将上述“默认命令”设置为 LuaLaTeX

另一个是upLaTeX + dvipdfmx,长为日语标准。 TeXShop 为 pTeX 和 upTeX 系列提供调用 ptex2pdf(TeX Live 附带的 Lua 脚本)的引擎,以及通过 latexmk 驱动 upLaTeX → dvipdfmx 的引擎。这样一个 .engine 的主体大致是下面的一行;包括 -synctex=1 也可以使接下来描述的 SyncTeX 工作:

terminal
#!/bin/sh
ptex2pdf -l -u -ot "-synctex=1 -file-line-error" "$1"

这里 ptex2pdf -l -u 的意思是“用 upLaTeX 编译,然后用 dvipdfmx 生成 PDF”,而 -ot 将额外的选项传递给引擎。添加 -file-line-error 会使错误显示为“file:line”,这使得更容易跳转到原因。将日语文档也保存在 UTF-8 中,并且根据上一节,将默认编码设置为 UTF-8 可以让事情顺利进行。

SyncTeX(正向和反向搜索)

SyncTeX 将源行映射到 PDF 中的位置并返回。通过它,您可以进行正向搜索(从源代码中所在的行跳转到 PDF 中的匹配位置)和反向搜索(从 PDF 中的某个位置跳回相应的源代码行)。校对时它会得到回报:对“哪一行产生了这一段”的追寻就消失了。

在现代 TeXShop 中,标准引擎已经包含 -synctex=1,因此 SyncTeX 默认情况下是打开的(只有当您使用自制引擎时,才需要记住包含 -synctex=1,如上面的示例所示)。排版时会自动生成同步文件(.synctex.gz)。

该手势非常简单 - ⌘-单击,向任一方向。 ⌘-单击预览中的文本可跳回生成该文本的源代码行(反向搜索)。相反,⌘-单击源可跳转到 PDF 中的相应位置(正向搜索)。即使在很长的手稿或多文件项目中,您也可以立即将您正在查看的内容与其来源对齐。