所有 TeX 引擎是否有一个通用的前言?

所有 TeX 引擎是否有一个通用的前言?

我知道有一个iftex软件包可以让你根据所使用的引擎是 还是 来执行特定的操作PDFLaTeXXeLaTeXLuaLaTeX

我也知道LuaLaTex禁止使用inputenc包并需要fontspec。我不知道其他人的禁止和先决条件。

如何使用以下包来满足iftex这三个引擎的包条件: tikz、、、、和其他?tcolorboxbabelamsmathamsfontsamssymb

例如,如何填充此 ECM 的前导码以使其对所有 LaTeX 引擎通用,或者这对于大多数 LaTeX 引擎来说是不可能的?

编辑 我问的问题不是针对这份文件,而是针对每一份可以想到的文件。我将 ECM 放在下面,因为我知道我会被要求放一份,所以我把唯一用处就是有序言的那个放在那里。

\documentclass[11pt]{article}
\usepackage{iftex}
%\usepackage{tikz}
%\usepackage{amsmath, amsfonts, amssymb,mathrsfs}
%\usepackage[margin=1cm]{geometry}
%\usepackage[french]{babel}
%\ifLuaTeX
%\usepackage{fontspec}
%\else
%⟨material not for LuaT E X⟩
%\fi

%\ifXeTeX
%⟨material for XeT E X⟩
%\else
%⟨material not for XeT E X⟩
%\fi
%
%\ifPDFTeX
%⟨material for PDFT E X⟩
%\else
%⟨material not for PDFT E X⟩
%\fi

\begin{document}

Bien sûr, il s'agit d'écrire aussi avec des accents français et des formules mathématiques comme $2\times3^2=18$

Left of picture\begin{tikzpicture}
\draw[use as bounding box] (2,0) rectangle (3,1);
\draw (1,0) -- (4,.75);
\end{tikzpicture}right of picture

\end{document}

答案1

以下文档在 pdflatex、xelatex 和 lualatex 中运行无错误:

\documentclass[11pt]{article}

\usepackage[french]{babel}
\usepackage{tikz}

\begin{document}

Bien sûr, il s'agit d'écrire aussi avec des accents français.

Left of picture\begin{tikzpicture}
\draw[use as bounding box] (2,0) rectangle (3,1);
\draw (1,0) -- (4,.75);
\end{tikzpicture}right of picture

\end{document}

如果你的 latex 版本早于 2018-04-01 版本,那么你需要添加:

\usepackage[utf8]{inputenc}

对于 pdftex,它会在 lualatex 和 xelatex 中生成一个警告,提示它什么都不做,但这是设计使然,以便您可以在可移植文档中使用该形式。

理想情况下,对于 pdftex,您应该添加:

\usepackage[T1]{fontenc}

我倾向于这样做,而不是为了测试而添加额外的包:

\ifx\Umathchar\undefined
\usepackage[T1]{fontenc}
\fi

因此fontenc在 xetex 和 luatex 中不会使用,所以最终文件是:

\documentclass[11pt]{article}

\usepackage[french]{babel}

\ifx\Umathchar\undefined
 \usepackage[T1]{fontenc}
\fi

\usepackage{tikz}

\begin{document}

Bien sûr, il s'agit d'écrire aussi avec des accents français.

Left of picture\begin{tikzpicture}
\draw[use as bounding box] (2,0) rectangle (3,1);
\draw (1,0) -- (4,.75);
\end{tikzpicture}right of picture

\end{document}

相关内容