Никогда не загружайте то, о чем не знаете, что оно делает.

Никогда не загружайте то, о чем не знаете, что оно делает.

Я упорно трудился, чтобы найти MWE для этой проблемы, удаляя практически все из моей преамбулы и файла класса SAE, пока не обнаружил, что пакет siunitx, похоже, не очень хорошо работает со шрифтом times (он отлично работает с Helvetica).

Начну с MWE моего файла класса, в котором я заставил шрифт times соответствовать рекомендациям SAE и их файлам шаблонов:

\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{saeRyan}[2016/02/23 SAE Technical paper format^^J]

% Option for the "Times New Roman" font
\DeclareOption{times}{%
  \renewcommand{\familydefault}{ptm}%
  \typeout{^^JSetting document font to Times^^J}%
  }

% Option for letter size paper (U.S.)
\DeclareOption{letterpaper}{%

% Define the margins for letter size paper (0.5" margins all the way around) using the geometry package.
\PassOptionsToPackage{letterpaper,nohead,left=.5in,top=.5in,right=.5in,textheight=10in}{geometry}%
  \typeout{^^JPaper size: Letter^^J}%
  \AtBeginDocument{ \columnsep .5in }
  }

\DeclareOption{pdftex}{%
  \PassOptionsToClass{\CurrentOption}{article}%
  \PassOptionsToPackage{\CurrentOption}{geometry}
  }

\DeclareOption{nonumber}{%
  \pagestyle{empty}%
  }

% This handles any options that are not understood by the class.
\DeclareOption*{\typeout{^^JOption [\CurrentOption] not supported by this style.^^J}}

% Default Options
\ExecuteOptions{times,letter,9pt}
\ProcessOptions

% The extarticle class allows for 9 pt font as the normalsize font.
\LoadClass[twocolumn,9pt]{extarticle}

Вот краткое изложение проблемы, с которой я столкнулся при использовании этого минимального файла классов:

\documentclass[letterpaper]{saeRyan}

%\usepackage{lmodern}
\usepackage[detect-all]{siunitx} 
\usepackage{enumitem,booktabs,cfr-lm}
\usepackage{tabularx}
\usepackage[referable]{threeparttablex}
\renewlist{tablenotes}{enumerate}{1}

% This package is for convenience in making notes during the revision process.
%\usepackage[colorinlistoftodos]{todonotes}

\begin{document}

\begin{table}[h]
    \footnotesize
    \centering
        \begin{tabular}{ll}
        \toprule
        times vs. helvetica using siunitx: & \SI{110}{\micro\meter} 110 micrometers (correct font)\\
        \bottomrule
    \end{tabular}
  \caption{Font Test}\label{tab:test}
\end{table}

\end{document}

введите описание изображения здесь

Вы можете увидеть, в чем здесь проблема... несмотря на то, что в siunitx есть переключатель «detekt-all», единицей измерения siunitx является Helvetica, а в остальной части документа — время. Это приводит к странным единицам измерения во всем документе (не только в таблицах). Кто-нибудь видит очевидную проблему? Я действительно не очень разбираюсь в написании файлов классов, я просто пытаюсь понять все по ходу дела.

решение1

Это Latin Modern. Вы используете Latin Modern Roman, Sans и Mono в качестве шрифтов по умолчанию. Точнее, ваш serif — LM Roman с пропорциональными выступающими фигурами; ваш sans — LM Sans с пропорциональными выступающими фигурами; и ваша пишущая машинка, вероятно, LM-пишущая машинка переменной ширины с пропорциональными выступающими фигурами.

Никогда не загружайте то, о чем не знаете, что оно делает.

Просто установить serif на ptmне даст хороших результатов. Ваши sans, mono и все ваши математические формулы будут в Computer Modern. Вероятно, вы хотите что-то вроде этого, чтоделаетиспользуйте NimbusRomanNo9L:

  \usepackage{mathptmx}
  \usepackage[scaled=.90]{helvet}
  \usepackage{courier}

Кроме того, ваш файл класса содержит несколько ложных пробелов, а обработка опций запутана. Ваш класс не объявляет ни 9ptили letterкак допустимые опции.

Вероятно, вы хотите что-то вроде этого:

\begin{filecontents}{saeRyan.cls}
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{saeRyan}[2016/02/23 SAE Technical paper format]

\newif\iftimesfont\timesfontfalse
% Option for the "Times New Roman" font
\DeclareOption{times}{%
  \timesfonttrue
  \typeout{Setting document font to Times, with complementary sans, typewriter and mathematics fonts.}%
}

% Option for letter size paper (U.S.)
\DeclareOption{letterpaper}{%
% Define the margins for letter size paper (0.5" margins all the way around) using the geometry package.
\PassOptionsToPackage{letterpaper,nohead,left=.5in,top=.5in,right=.5in,textheight=10in}{geometry}%
  \typeout{Paper size: Letter}%
  \AtBeginDocument{\columnsep .5in}%
}

\DeclareOption{nonumber}{%
  \pagestyle{empty}%
}

% This handles any options that are not understood by the class.
\DeclareOption*{\typeout{Option [\CurrentOption] not supported by this style.}}

% Default Options
\ExecuteOptions{times,letterpaper}
\ProcessOptions

% The extarticle class allows for 9 pt font as the normalsize font.
\LoadClass[twocolumn,9pt]{extarticle}
\iftimesfont
  \RequirePackage{mathptmx}
  \RequirePackage[scaled=.90]{helvet}
  \RequirePackage{courier}
\fi
\endinput
\end{filecontents}
\documentclass[letterpaper]{saeRyan}
\usepackage[detect-all]{siunitx}
\usepackage{enumitem,booktabs}
\usepackage{tabularx}
\usepackage[referable]{threeparttablex}
\renewlist{tablenotes}{enumerate}{1}
\begin{document}
\begin{table}[h]
  \footnotesize
  \centering
  \begin{tabular}{ll}
    \toprule
    times vs.\ helvetica using siunitx: & \SI{110}{\micro\meter} 110 micrometers (correct font)\\
    \bottomrule
  \end{tabular}
  \caption{Font Test}\label{tab:test}
\end{table}
\end{document}

измененный класс для Nimbus Roman No. 9

Связанный контент