Получение двух таблиц в LaTeX с одинаковой (по правому краю) шириной столбца

Вот код, который я недавно написал на Java, который вычисляет и возвращает всю комбинацию «num» элементов из элементов «outOf».

// author: Sourabh Bhat (heySourabh@gmail.com)

public class Testing
{
    public static void main(String[] args)
    {

// Test case num = 5, outOf = 8.

        int num = 5;
        int outOf = 8;
        int[][] combinations = getCombinations(num, outOf);
        for (int i = 0; i < combinations.length; i++)
        {
            for (int j = 0; j < combinations[i].length; j++)
            {
                System.out.print(combinations[i][j] + " ");
            }
            System.out.println();
        }
    }

    private static int[][] getCombinations(int num, int outOf)
    {
        int possibilities = get_nCr(outOf, num);
        int[][] combinations = new int[possibilities][num];
        int arrayPointer = 0;

        int[] counter = new int[num];

        for (int i = 0; i < num; i++)
        {
            counter[i] = i;
        }
        breakLoop: while (true)
        {
            // Initializing part
            for (int i = 1; i < num; i++)
            {
                if (counter[i] >= outOf - (num - 1 - i))
                    counter[i] = counter[i - 1] + 1;
            }

            // Testing part
            for (int i = 0; i < num; i++)
            {
                if (counter[i] < outOf)
                {
                    continue;
                } else
                {
                    break breakLoop;
                }
            }

            // Innermost part
            combinations[arrayPointer] = counter.clone();
            arrayPointer++;

            // Incrementing part
            counter[num - 1]++;
            for (int i = num - 1; i >= 1; i--)
            {
                if (counter[i] >= outOf - (num - 1 - i))
                    counter[i - 1]++;
            }
        }

        return combinations;
    }

    private static int get_nCr(int n, int r)
    {
        if(r > n)
        {
            throw new ArithmeticException("r is greater then n");
        }
        long numerator = 1;
        long denominator = 1;
        for (int i = n; i >= r + 1; i--)
        {
            numerator *= i;
        }
        for (int i = 2; i <= n - r; i++)
        {
            denominator *= i;
        }

        return (int) (numerator / denominator);
    }
}
16
задан Brian Tompsett - 汤莱恩 14 January 2017 в 20:41
поделиться

5 ответов

Если вы используете пакет array, вы можете поместить \hfill в заголовок следующим образом, так что вам не нужно помнить, чтобы поместить его (или \parbox) в каждую строку.

\documentclass{article}
\usepackage{multicol}
\usepackage{array}
\begin{document}
\section{Work Experience}

\begin{tabular}{>{\hfill}p{5cm}|p{11cm}}
  Current & Your job at Your Company, Town \\
  Jan 2009 & What your company does \\
  & A description of what you do\\
  \multicolumn{2}{c}{} 
\end{tabular}

\section{Education}

\begin{tabular}{>{\hfill}p{5cm}|p{11cm}}
  Slightly wider first column & University, Town \\
  Jan 2009 & Thesis subject \\
  & A description of what you did\\
  \multicolumn{2}{c}{} 
\end{tabular}
\end{document}

, чтобы дать:

альтернативный текст http://www.freeimagehosting.net/uploads/5e29f675e3.jpg

17
ответ дан Ramashalanka 14 January 2017 в 20:41
поделиться

Вот вариант ответа @ RTBarnard с использованием пакета tabularx :

\documentclass[a4paper,twoside,draft,12pt]{article}
\usepackage{tabularx}
\begin{document}

\section{Work Experience}

\begin{tabularx}{\textwidth}{>{\raggedleft}X|p{8cm}}
Current & Your job at Your Company, Town \\
Jan 2009 & What your company does \\
& A description of what you do\\
\end{tabularx}

\section{Education}

\begin{tabularx}{\textwidth}{>{\raggedleft}X|p{8cm}}
Somewhat wider than first column, 
overflowing into additional lines & University, Town \\
Jan 2009 & Thesis subject \\
& A description of what you did\\
\end{tabularx}
\end{document}

Примечания:

  1. Почему tabularx ? Потому что часто легче узнать ширину, доступную для всей таблицы, и позволить TeX вычислить неизвестную ширину столбцов .
  2. Первый параметр - это общая ширина таблицы. Здесь я указал \ textwidth , чтобы заполнить ширину текстового блока, но вы можете изменить это на любую нужную вам меру.
  3. Я использовал \ raggedright , а не \ hfill : если элемент перетекает во вторую строку, \ hfill выровняет только по правому краю первую строка абзаца.
  4. Был ли \ multicol значимым? Я удалил его, чтобы ответить как можно проще.

Запускать с XeTeX под TeXLive.

6
ответ дан 30 November 2019 в 21:10
поделиться

Вот одно из множества возможных решений:

\begin{tabular}{r|p{11cm}}
\parbox{11cm}{\hfill Current} & Your job at Your Company, Town \\
Jan 2009 & What your company does \\
& A description of what you do\\
\multicolumn{2}{c}{}\ 
\end{tabular}

По сути, создайте \ parbox с желаемой шириной и поместите \ hfill слева.

3
ответ дан 30 November 2019 в 21:10
поделиться

Вы можете указать оба параметра p {width} и ​​начинать каждую ячейку слева с \ hfill .

1
ответ дан 30 November 2019 в 21:10
поделиться

Вы можете использовать пакет array, чтобы указать команду заполнения для каждой строки в вашем первом столбце:

\begin{tabular}{>{\hfill}p{11cm}|p{11cm}|}

Например:

\documentclass{article}
\usepackage{array}
\begin{document}

\begin{tabular}{>{\hfill}p{5cm}|p{11cm}|}
This is a test & test
\end{tabular}

\begin{tabular}{>{\hfill}p{5cm}|p{11cm}|}
Test & this is a test
\end{tabular}
\end{document}
1
ответ дан 30 November 2019 в 21:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: