這
\documentclass[a4paper,10pt,openany]{scrbook}
\usepackage{minted}
\usepackage[T1]{fontenc} % comment-out this line to fix it
\newcommand{\ctype}[1]{\PYG{k+kt}{\texttt{#1}}}
\begin{document}
\begin{tabular}{|l|c|c|r|r|}
\hline
Type & Bits & Bytes & Minimum & Maximum \\ \hline
\ctype{int8\_t} & 8 & 1 & -128 & 127 \\ \hline
\ctype{int16\_t} & 16 & 2 & -32,768 & 32,767 \\ \hline
\ctype{int32\_t} & 32 & 4 & −2,147,483,648 & 2,147,483,647 \\ \hline
\ctype{int64\_t} & 64 & 8 & −9,223,372,036,854,775,808 & 9,223,372,036,854,775,807 \\ \hline
\end{tabular}
\end{document}
產生這個
我包括fontenc
修復“字體形狀*未定義”警告,但它會混淆一些負數?
為什麼會fontenc
出現這種效果,如何解決?
答案1
這是擴展評論:
-
我想知道OP MWE 中的前兩行和最後兩行中的符號怎麼可能有不同的字元。在下面的 MWE 中,我僅重新輸入-
字元(並且還考慮了表格格式艾格雷格第二個例子)並且它可以在沒有\DeclareUnicodeCharacter{2212}{-}
和有和沒有的情況下工作\usepackage[T1]{fontenc}
:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{xcolor}
\usepackage{array,booktabs}
\usepackage{siunitx}
\begin{document}
\begin{tabular}{
>{\color{purple}}r
S[table-format=2.0]
S[table-format=1.0]
S[table-format=-19.0]
S[table-format= 19.0]
}
\toprule
\verb+int8_t+ & 8 & 1 & -128 & 127 \\
\midrule
\verb+int16_t+ & 16 & 2 & -32768 & 32767 \\
\verb+int32_t+ & 32 & 4 & -2147483648 & 2147483647 \\
\verb+int64_t+ & 64 & 8 & -9223372036854775808 & 9223372036854775807 \\
\bottomrule
\end{tabular}
\end{document}
utf8
如果有的話,我使用 WinEdt 作為預設編碼的編輯器。
答案2
最後兩行中的字元−
是 U+2212,在 UTF-8 中輸入為<E2><88><92>
T1 編碼字體恰好在這些位置具有â
,Ĺ
和。Š
如果沒有fontenc
,您不會得到任何輸出,但會收到有關丟失字元的警告。
還可以使用inputenc
:
\documentclass[a4paper,10pt,openany]{scrbook}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{siunitx}
\DeclareUnicodeCharacter{2212}{-} % if U+2212 slips in
\newcommand{\ctype}[1]{\texttt{#1}}
\sisetup{group-separator={,}}
\begin{document}
\begin{tabular}{
|l|
S[table-format=2.0]|
S[table-format=1.0]|
S[table-format=-19.0]|
S[table-format=19.0]|
}
\hline
Type & {Bits} & {Bytes} & {Minimum} & {Maximum} \\ \hline
\ctype{int8\_t} & 8 & 1 & -128 & 127 \\ \hline
\ctype{int16\_t} & 16 & 2 & -32768 & 32767 \\ \hline
\ctype{int32\_t} & 32 & 4 & −2147483648 & 2147483647 \\ \hline
\ctype{int64\_t} & 64 & 8 & −9223372036854775808 & 9223372036854775807 \\ \hline
\end{tabular}
\end{document}
(我刪除了,minted
因為 的定義\ctype
給了錯誤。)
只是為了改進,加載表格booktabs
並將其更改為
\begin{tabular}{
@{}
l
S[table-format=2.0]
S[table-format=1.0]
S[table-format=-19.0]
S[table-format=19.0]
@{}
}
\toprule
Type & {Bits} & {Bytes} & {Minimum} & {Maximum} \\
\midrule
\ctype{int8\_t} & 8 & 1 & -128 & 127 \\
\ctype{int16\_t} & 16 & 2 & -32768 & 32767 \\
\ctype{int32\_t} & 32 & 4 & −2147483648 & 2147483647 \\
\ctype{int64\_t} & 64 & 8 & −9223372036854775808 & 9223372036854775807 \\
\bottomrule
\end{tabular}
我還刪除了 的設置group-separator
,這留下了預設的薄空間: