用于在 2 列水平共享页面中旋转和右对齐文本的模板

用于在 2 列水平共享页面中旋转和右对齐文本的模板

我想在 4 个区域共享我的页面:A、B、C、D 页面水平共享一半,每个区域垂直共享一半。

A 在左上角,文本旋转 180° 并与右边距对齐 B 在右上角,文本旋转 180° 并与右边距对齐 C 在左下角,文本正常并与左边距对齐 C 在右下角,文本正常并与左边距对齐

我想制作一个模板,使我的文本在区域 A、B、C 和 D 中“流动”。

我希望避免使用表格,但如果这是更简单的方法,我并不反对。

这是我编写的代码,它旋转文本但文本左对齐并且无法形成两列

\documentclass{article}

% preambule
\usepackage[utf8]{inputenc} 
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{graphicx}
\usepackage[french]{babel}


\usepackage{graphicx}

\begin{document}


\begin{multicols}{2}
\rotatebox{180}{coffe}
\newline
\rotatebox{180}{beer}
\newline
\rotatebox{180}{water} 
\newline
\rotatebox{180}{soda}
\newline
\rotatebox{180}{tea}
\newline
\rotatebox{180}{gin}
\end{multicols}
\end{document}

这里有一张图来展示我想要的。共享线可以随意显示或隐藏。A 部分和 B 部分可以是标签而不是 2 列,如果 A 部分不能包含所有标签,它将继续在 B 部分(A 部分仍然反转,B 部分正常)。 在此处输入图片描述

在此处输入图片描述

答案1

像这样?

使用 expl3、2 个键:

  1. nbrows(默认为 4)
  2. 角度(默认为 0°)

使用 tabularray

  1. 注释 hlines,vlines,如果没有划定

  2. colspec={*{2}{Q[l,m,wd=0.45\linewidth]}},表示列宽

  3. rows = {0.1\textheight} 表示行高

    \documentclass{article}
    \usepackage{showframe}
    \usepackage{tikz}
    \usepackage{tabularray}
    \parindent=0pt
    \ExplSyntaxOn
    \seq_new:N \l__nameyourmodule_elem_seq
    \tl_new:N \l__nameyourmodule_table_tl
    \tl_new:N \l__nameyourmodule_nbrows_tl
    \tl_new:N \l__nameyourmodule_angle_tl
    \tl_new:N \l__nameyourmodule_rowHeight_tl
    \keys_define:nn { yourtable }
        { 
            nbrows .tl_set:N = \l__nameyourmodule_nbrows_tl,
            angle .tl_set:N = \l__nameyourmodule_angle_tl,
            %%% default values 
            nbrows .initial:n = { 4 },
            angle .initial:n = { 0 },
        }
    \NewDocumentCommand{\mytable}{O{} m }
    {
        \keys_set:nn { yourtable } { #1 }
        \seq_set_from_clist:Nn \l__nameyourmodule_elem_seq {#2}
        \tl_clear:N \l__nameyourmodule_table_tl
        \int_step_inline:nn {\l__nameyourmodule_nbrows_tl}
        % \seq_map_inline:Nn \l__nameyourmodule_elem_seq  
        {  
        \tl_put_right:Nn \l__nameyourmodule_table_tl 
            {
            \seq_item:Nn \l__nameyourmodule_elem_seq {##1} & 
            \seq_item:Nn \l__nameyourmodule_elem_seq {\l__nameyourmodule_nbrows_tl+##1}\\
            }
        }
    
        \begin{tikzpicture}
        \node[rotate=\l__nameyourmodule_angle_tl]
            {
            \use:x% code of frougon  https://tex.stackexchange.com/questions/648904/misplaced-alignment-tab-character-with-tabularray-and-expl3
                {
                \exp_not:n {\begin{tblr}
                                {
                                hlines,vlines,
                                colspec={*{2}{Q[l,m,wd=0.45\linewidth]}},
                                rows = {0.1\textheight}
                                }}
                \exp_not:V {\l__nameyourmodule_table_tl}
                \exp_not:n {\end{tblr}}
                }
            };
        \end{tikzpicture}
    }
    \ExplSyntaxOff
    \begin{document}
    \mytable{Neqe,porro,quisquam,est,lg5}
    
    \mytable[angle=180]{Neqe,porro,quisquam,est,lg5}
    
    \mytable[nbrows=3]{lg1,lg2,lg3,lg4,lg5}
    
    \mytable[nbrows=3,angle=90]{lg1,lg2,lg3,lg4,lg5}
    \end{document}
    

相关内容