alterar a fonte do conteúdo da tabela

alterar a fonte do conteúdo da tabela

estou tentando seguireste exemplopara alterar a fonte em uma tabela. É uma solução parcial para o código abaixo. Simplesmente não consigo obter os valores para alterar as fontes também.

\documentclass{article}

\usepackage{booktabs}
\usepackage{etoolbox}
\usepackage[format=plain,
  labelformat=simple,
  font={small,sf,bf},
  indention=0cm,
  labelsep=period,
  justification=centering,
  singlelinecheck=true,
  tableposition=top,
  figureposition=bottom]{caption}

\makeatletter
\appto\@floatboxreset{%
  \ifx\@captype\andy@table
    \ttfamily
  \fi
}
\def\andy@table{table}
\makeatother

\begin{document}

Blah blah. Should be a serif font.


\begin{table}
\caption{My title}
\begin{center}
\begin{tabular}{l c c c }
\hline
 & treat x time & treat x time x female & treat x time x female \\
\hline
(Intercept)                         & $-0.03$           & $0.01$           & $-0.83^{*}$       \\
                                    & $[-0.16;\ 0.10]$  & $[-0.13;\ 0.15]$ & $[-0.93;\ -0.73]$ \\
v1                            & $-0.06$           & $-0.06$          & $-0.07$           \\
                                    & $[-0.23;\ 0.11]$  & $[-0.23;\ 0.11]$ & $[-0.18;\ 0.05]$  \\
v2                              & $0.05$            & $-0.03$          &                   \\
                                    & $[-0.04;\ 0.15]$  & $[-0.16;\ 0.11]$ &                   \\
\hline
\multicolumn{4}{l}{\scriptsize{$^*$ 0 outside the confidence interval. Fixed effect of time treated as factor.}}
\end{tabular}
\label{m123}
\end{center}
\end{table}

Blah blah. Should be a serif font.

\end{document}

insira a descrição da imagem aqui

Responder1

Basta remover $onde for desnecessário (ou seja, em quase todos os lugares).

\documentclass{article}

\usepackage{booktabs}
\usepackage{etoolbox}
\usepackage[format=plain,
  labelformat=simple,
  font={small,sf,bf},
  indention=0cm,
  labelsep=period,
  justification=centering,
  singlelinecheck=true,
  tableposition=top,
  figureposition=bottom,
]{caption}

\makeatletter
\appto\@floatboxreset{%
  \ifx\@captype\andy@table
    \ttfamily
  \fi
}
\def\andy@table{table}
\makeatother

\begin{document}

Blah blah. Should be a serif font.

\begin{table}
\centering

\caption{My title}\label{m123}

% fix the overfull
\small\addtolength{\tabcolsep}{-2pt}

\begin{tabular}{ l c c c }
\hline
 & treat x time & treat x time x female & treat x time x female \\
\hline
(Intercept) & -0.03         & 0.01          & -0.83$^{*}$    \\
            & [-0.16; 0.10] & [-0.13; 0.15] & [-0.93; -0.73] \\
v1          & -0.06         & -0.06         & -0.07          \\
            & [-0.23; 0.11] & [-0.23; 0.11] & [-0.18; 0.05]  \\
v2          & 0.05          & -0.03         &                \\
            & [-0.04; 0.15] & [-0.16; 0.11] &                \\
\hline
\multicolumn{4}{l}{%
  \scriptsize $^*$ 0 outside the confidence interval. Fixed effect of time treated as factor.%
}
\end{tabular}

\end{table}

Blah blah. Should be a serif font.

\end{document}

insira a descrição da imagem aqui

Algumas notas adicionais.

  1. Coloque o \labelpróximo ao objeto ao qual se refere, neste caso o\caption

  2. \scriptsizenão aceita argumento.

  3. Não use centerem um tableambiente, mas \centering.


Se você não quiser tocar na tabela gerada pelo programa externo, é um pouco mais difícil.

\documentclass{article}

\usepackage{booktabs}
\usepackage{etoolbox}
\usepackage[format=plain,
  labelformat=simple,
  font={small,sf,bf},
  indention=0cm,
  labelsep=period,
  justification=centering,
  singlelinecheck=true,
  tableposition=top,
  figureposition=bottom]{caption}

\makeatletter
\appto\@floatboxreset{%
  \ifx\@captype\andy@table
    \ttfamily
    \everymath{\fam=\group@mathtt\relax\andy@changemathcodes}%
  \fi
}
\def\andy@table{table}
\let\andy@space\ %
\AtBeginDocument{%
  \check@mathfonts
  \sbox\z@{$\mathtt{\xdef\group@mathtt{\gdef\noexpand\group@mathtt{\the\fam}}\group@mathtt}$}%
  \def\andy@changemathcodes{%
    \count@="2\group@mathtt00 \advance\count@`-\mathcode`-=\count@
    \count@="4\group@mathtt00 \advance\count@`[\mathcode`[=\count@
    \count@="5\group@mathtt00 \advance\count@`]\mathcode`]=\count@
    \count@="0\group@mathtt00 \advance\count@`;\mathcode`;=\count@
    \def\ {\mathopen{\andy@space}}%
  }%
}
\makeatother

\begin{document}


Blah blah. Should be a serif font; here's math: $a+b$

\begin{table}
\centering

\caption{With dollars}

% fix the overfull
\small\addtolength{\tabcolsep}{-2pt}

\begin{tabular}{ l c c c }
\hline
& treat x time & treat x time x female & treat x time x female       \\
\hline
(Intercept) & $-0.03$          & $0.01$           & $-0.83^{*}$       \\
            & $[-0.16;\ 0.10]$ & $[-0.13;\ 0.15]$ & $[-0.93;\ -0.73]$ \\
v1          & $-0.06$          & $-0.06$          & $-0.07$           \\
            & $[-0.23;\ 0.11]$ & $[-0.23;\ 0.11]$ & $[-0.18;\ 0.05]$  \\
v2          & $0.05$           & $-0.03$          &                   \\
            & $[-0.04;\ 0.15]$ & $[-0.16;\ 0.11]$ &                   \\
\hline
\multicolumn{4}{l}{%
  \scriptsize$^*$ 0 outside the confidence interval. Fixed effect of time treated as factor.%
}
\end{tabular}

\end{table}



\begin{table}[htp]
\centering

\caption{My title}\label{m123}

% fix the overfull
\small\addtolength{\tabcolsep}{-2pt}

\begin{tabular}{ l c c c }
\hline
 & treat x time & treat x time x female & treat x time x female \\
\hline
(Intercept) & -0.03         & 0.01          & -0.83$^{*}$    \\
            & [-0.16; 0.10] & [-0.13; 0.15] & [-0.93; -0.73] \\
v1          & -0.06         & -0.06         & -0.07          \\
            & [-0.23; 0.11] & [-0.23; 0.11] & [-0.18; 0.05]  \\
v2          & 0.05          & -0.03         &                \\
            & [-0.04; 0.15] & [-0.16; 0.11] &                \\
\hline
\multicolumn{4}{l}{%
  \scriptsize $^*$ 0 outside the confidence interval. Fixed effect of time treated as factor.%
}
\end{tabular}

\end{table}

Blah blah. Should be a serif font; here's math: $a+b$.

\end{document}

Como você pode ver, a saída é a mesma.

insira a descrição da imagem aqui

Responder2

Isso utilizaPosso alterar toda a saída matemática para usar texto monoespaçado?para adicionar o \everymathcomando apropriado ao seu \@floatboxresetpatch:

insira a descrição da imagem aqui

\documentclass{article}

\usepackage{etoolbox}

\makeatletter
\appto\@floatboxreset{%
  \ifx\@captype\andy@table
    \ttfamily
    % https://tex.stackexchange.com/q/119879/5764
    \everymath{\mathtt{\xdef\tmp{\fam\the\fam\relax}\aftergroup\tmp}}% 
  \fi
}
\def\andy@table{table}
\makeatother

\begin{document}

\begin{table}
  \begin{tabular}{ l *{3}{c} }
    \hline
     & treat x time & treat x time x female & treat x time x female       \\
    \hline
    (Intercept) & $-0.03$          & $0.01$           & $-0.83^{*}$       \\
                & $[-0.16;\ 0.10]$ & $[-0.13;\ 0.15]$ & $[-0.93;\ -0.73]$ \\
    v1          & $-0.06$          & $-0.06$          & $-0.07$           \\
                & $[-0.23;\ 0.11]$ & $[-0.23;\ 0.11]$ & $[-0.18;\ 0.05]$  \\
    v2          & $0.05$           & $-0.03$          &                   \\
                & $[-0.04;\ 0.15]$ & $[-0.16;\ 0.11]$ &                   \\
    \hline
    \multicolumn{4}{l}{\scriptsize{$^*$ 0 outside the confidence interval. Fixed effect of time treated as factor.}}
  \end{tabular}
\end{table}

\end{document}

Infelizmente, o espaçamento em torno de um sinal de menos unário não é consistente. Por exemplo, veja $a - b$ $-b$ $[-b]$ ${-}b$:

insira a descrição da imagem aqui

Talvez seja necessário usar o {-}para forçar um sinal de menos unário quando necessário.

informação relacionada