이 테이블의 셀에 텍스트를 맞추는 방법은 무엇입니까?

이 테이블의 셀에 텍스트를 맞추는 방법은 무엇입니까?

Latex를 사용하여 큰 테이블을 만들려고 합니다. 결과는 다음과 같아야 합니다. 여기에 이미지 설명을 입력하세요

하지만 내가 얻은 것은 다음과 같습니다. 여기에 이미지 설명을 입력하세요

\documentclass{article}

\usepackage{tabularx}
\usepackage{adjustbox}
\usepackage{siunitx}
\usepackage{array}
\usepackage{graphicx}

\begin{document}

\begin{center}
    \begin{adjustbox}{width=20cm, center}
    \begin{tabular}{|c|m{0.5cm}|c|c|c|c|c|c|}
        \hline
        \textbf{Barra} & \textbf{Comprimento[$\si{\metre}$]} & \hspace{0pt}\textbf{Área da Seção[$\si{mm^2}$]} & \textbf{Força sobre a barra[$\si{\newton}$]} & \textbf{Tensão Normal[$\si{\mega\pascal}$]} & \hspace{0pt}\textbf{Módulo de Elasticidade[$\si{\mega\pascal}$]} & $\si{\epsilon_{L}}$ & \hspace{0pt}\textbf{Deformação[$\si{\metre}$]}\\
        \hline
        & & & & & & & \\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
    \end{tabular}
    \end{adjustbox}
\end{center}

\end{document}

이 코드를 사용하면 텍스트를 더 작게 만들 수만 있습니다. 셀에 단일 단어("Deformação" 및 "Comprimento"와 같은 큰 단어)를 래핑할 수 없으며 이미 트릭을 시도했지만 \hspace{0pt}작동하지 않는 것 같습니다. tabularx와 같은 패키지로 솔루션을 시도한 후에도 여전히 제대로 작동하도록 할 수 없습니다. 또한 adjustbox를 사용해서만 중앙에 머물게 할 수 있었습니다. \centering작동하지 않았습니다. 누군가 나를 도와줄 수 있나요?

답변1

올바른 패키지를 사용하는 것은 문제입니다.

사용표로 만든열 너비를 자동으로 얻으려면바벨올바른 언어(내 추측으로는 포르투갈어가 가장 정확함)와비정형2e[overload]제목에 하이픈 넣기를 활성화하는 옵션이 있습니다 . 하이픈 넣기를 도와야합니다\- .바벨그리워요. 또한 테이블 형식이 너무 넓어서 을( fontsize를) 줄여야 합니다 footnotesize. 그래도 다음 중 하나를 사용해야 합니다.landscape 모드를 사용하거나 좌우 여백을 줄여야 합니다. 나는 사용했다기하학모든 마진을 줄입니다.

표 형식 앞의 명령은 \noindent표 형식이 왼쪽으로 이동하여 오른쪽 여백으로 돌출되는 것을 방지합니다. 또한 저는 일반c 또한 처음 두 표에서는표로 만든첫 번째 열이 너무 좁아졌습니다(을 조정할 수도 있었습니다 tymin).

당신은 사용을 고려할 수 있습니다책꽂이더 나은 간격을 얻으려면 모든 수직 규칙을 제거해야 합니다. 나는 다음을 사용하여 코드를 포함시켰습니다.책꽂이또한 수직 규칙을 모두 제거하고 가로 규칙의 수를 줄이는 것이 좋습니다.

규칙에 따라 무언가를 할 의향이 없거나 허용되지 않는 경우 다음을 사용하십시오.

\renewcommand{\arraystretch}{1.1}  % or 1.5
\setlength{\extrarowheight}{1pt}   % or 2 in case of 1.5 for arraystretch

간격을 개선합니다.

모든 열의 너비를 동일하게 하려면 다음을 사용하십시오.표 형식8개의 유사한 열이 있습니다. 중앙 정렬된 열을 원하는 것 같아서 Y다음 명령을 사용하여 새 열 유형을 정의하여 모든 열을 중앙 정렬했습니다.

\newcolumntype{Y}{>{\Centering\arraybackslash}X}

Centering의 명령이다비정형2e패키지. 같은 방법으로 왼쪽 또는 오른쪽 정렬 열을 정의할 수 있습니다.

\newcolumntype{W}{>{\RaggedRight\arraybackslash}X}
\newcolumntype{Z}{>{\RaggedLeft\arraybackslash}X}

[overload]옵션 을 사용하다보니비정형2e\centering, \raggedright또는 을 사용하더라도 시작됩니다 \raggedleft. 또한 질문에서 지적한 것처럼 간격을 상당히 늘렸습니다.

연필을 사용하여 손으로 작성하는 스코어카드를 제작하는 경우 세 번째 표는 괜찮습니다. 프리젠테이션이나 문서의 표 형식을 조판하는 경우 (제 생각에는) 다음 중 하나를 사용해야 합니다.책꽂이버전.

표에 들어갈 내용에 대한 정보를 제공하면 추가 추천을 받을 수 있습니다.

![여기에 이미지 설명을 입력하세요. 여기에 이미지 설명을 입력하세요

\documentclass{article}
\usepackage[portuguese]{babel}
\usepackage[margin=1.5cm]{geometry}
\usepackage{tabularx,tabulary, booktabs}
\usepackage{siunitx}
\usepackage[overload]{ragged2e}

\setlength{\tabcolsep}{2pt}
\renewcommand{\arraystretch}{1.1}
\setlength{\extrarowheight}{1pt}

\begin{document}

\section*{tabulary}


\footnotesize
{
\noindent\begin{tabulary}{\linewidth}{|c|C|C|C|C|C|C|C|}
\hline
        \textbf{Barra} & \textbf{Compri\-mento[$\si{\metre}$]} & \hspace{0pt}\textbf{Área da Seção[$\si{mm^2}$]} & \textbf{Força sobre a barra[$\si{\newton}$]} & \textbf{Tensão Normal[$\si{\mega\pascal}$]} & \hspace{0pt}\textbf{Módulo de Elasticidade[$\si{\mega\pascal}$]} & $\si{\epsilon_{L}}$ & \hspace{0pt}\textbf{Defor\-mação[$\si{\metre}$]}\\
        \hline
        & & & & & & & \\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
        & & & & & & &\\
        \hline
    \end{tabulary}%
}

\vspace{2cm}
{
\noindent\begin{tabulary}{\linewidth}{@{}c*{7}{C}@{}}
\toprule
        \textbf{Barra} & \textbf{Compri\-mento[$\si{\metre}$]} & \hspace{0pt}\textbf{Área da Seção[$\si{mm^2}$]} & \textbf{Força sobre a barra[$\si{\newton}$]} & \textbf{Tensão Normal[$\si{\mega\pascal}$]} & \hspace{0pt}\textbf{Módulo de Elasticidade[$\si{\mega\pascal}$]} & $\si{\epsilon_{L}}$ & \textbf{Defor\-mação[$\si{\metre}$]}\\
\midrule
        1 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\
        2 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\
        3 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\
        4 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\
        5 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\\midrule
        6 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\
        7 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\
        8 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\
        9 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\
        10 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\
    \bottomrule
    \end{tabulary}
\pagebreak
\section*{tabularx}
}
{
\renewcommand{\arraystretch}{1.5}
\setlength{\extrarowheight}{2pt}
\setlength{\arrayrulewidth}{0.2pt}
\newcolumntype{Y}{>{\Centering\arraybackslash}X}

\noindent\begin{tabularx}{\linewidth}{*{8}{|Y}|}
\hline
        \textbf{Barra} & \textbf{Compri\-mento[$\si{\metre}$]} & \hspace{0pt}\textbf{Área da Seção[$\si{mm^2}$]} & \textbf{Força sobre a barra[$\si{\newton}$]} & \textbf{Tensão Normal[$\si{\mega\pascal}$]} & \hspace{0pt}\textbf{Módulo de Elasti\-cidade[$\si{\mega\pascal}$]} & $\si{\epsilon_{L}}$ & \textbf{Defor\-mação[$\si{\metre}$]}\\
\hline
        1 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\\hline
        2 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\\hline
        3 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\\hline
        4 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\\hline
        5 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\\hline
        6 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\\hline
        7 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\\hline
        8 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\\hline
        9 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\\hline
        10 & 20 & 300 & 400 & 500 & 600 & 7 & 800\\
    \hline
    \end{tabularx}%
}

\vspace{2cm}

{
\newcolumntype{Y}{>{\Centering\arraybackslash}X}

\noindent\begin{tabularx}{\linewidth}{*{8}{Y}}
\toprule
        \textbf{Barra} &
        \textbf{Compri\-mento[$\si{\metre}$]}l &
        \hspace{0pt}\textbf{Área da Seção[$\si{mm^2}$]} &
        \textbf{Força sobre a barra[$\si{\newton}$]} &
        \textbf{Tensão Normal[$\si{\mega\pascal}$]} &
        \textbf{Módulo de Elasti\-cidade[$\si{\mega\pascal}$]} &
        $\si{\epsilon_{L}}$ &
        \textbf{Defor\-mação[$\si{\metre}$]}\\
\midrule
        100 & 20 & 300 & 400 & 500 & 600 & 700 & 800\\
        200 & 20 & 300 & 400 & 500 & 600 & 700 & 800\\
        300 & 20 & 300 & 400 & 500 & 600 & 700 & 800\\
        400 & 20 & 300 & 400 & 500 & 600 & 700 & 800\\
        500 & 20 & 300 & 400 & 500 & 600 & 700 & 800\\\addlinespace[6pt]
        600 & 20 & 300 & 400 & 500 & 600 & 700 & 800\\
        700 & 20 & 300 & 400 & 500 & 600 & 700 & 800\\
        800 & 20 & 300 & 400 & 500 & 600 & 700 & 800\\
        900 & 20 & 300 & 400 & 500 & 600 & 700 & 800\\
        1000 & 20 & 300 & 400 & 500 & 600 & 700 & 800\\
    \hline
    \end{tabularx}%
}
\end{document}

답변2

그의 답변에서 @Sveinung 두 번째 예에 대한 보충/대체로:

  • 나는 열에 숫자가 있다고 생각합니다. 불행히도 그들은 알려지지 않았습니다. 그것들은 모두 정수인가요? 자릿수가 모두 같나요? 어쨌든, 나는 S열 유형을 사용하고 질문 아래 @frougon 주석을 고려하고 싶습니다.
\documentclass{article}
%\usepackage[portuguese]{babel}
\usepackage{geometry}
\usepackage{siunitx}
\usepackage{booktabs, makecell}
\renewcommand\theadfont{\footnotesize\bfseries}
\renewcommand\theadgape{}

%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%

\begin{document}
    \begin{center}
\small
\setlength{\tabcolsep}{4pt}        % Reduce space between columns
\setcellgapes{3pt}
\makegapedcells
\begin{tabular}{*{8}{S}}
    \toprule
{\thead{Barra}}
    &   {\thead{Compri-\\mento [\si{\metre}]}}         
        &   {\thead{Área da\\ Seção [\si{mm^2}]}}
    &   {\thead{Força sobre\\ a barra [\si{\newton}]}}
        & {\thead{Tensão\\ Normal [\si{\mega\pascal}]}}
    &   {\thead{Módulo de\\ Elasticidade [\si{\mega\pascal}]}} 
        &   {\si{\epsilon_{L}}}
    & {\thead{Deformação\\ {[\si{\metre}]}}}  \\
    \midrule
1  & 12.3 & 30 & 40      & 55.7  & 60 & 7 & 8  \\
12 &  4.5 & 33 & 38,2    & 33.44 & 60 & 7 & 6  \\
    \bottomrule
    \end{tabular}
\end{center}
\end{document}
  • 열 유형 의 경우 S숫자 형식을 결정하지 않았습니다. 예를 들어 S[table-format=2,2]숫자를 알 수 없기 때문에 기본값을 사용하면 꽤 좋은 결과를 얻을 수 있는 것 같습니다.

여기에 이미지 설명을 입력하세요

  • 보시다시피, 열 헤더에서 모두 제거하고 \hspace{...}(기능이 무엇인지 명확하지 않음) 단위에 대한 수학 환경을 제거했습니다. 즉, 대신 [$\si{metre}$]simple 을 사용했습니다 [\si{\metre}].

  • 마지막 열에는 단위가 중괄호 안에 삽입됩니다 \thead{Deformação\\ {[\si{\metre}]}}. 그렇지 않으면 컴파일 결과 예상치 못한 오류가 발생하므로 이 작업이 필요합니다.

관련 정보