LaTeX で複数行の色付きボックスを作成する

LaTeX で複数行の色付きボックスを作成する

2 行の色付きボックスを作成しようとしていますLaTeX。テキストを中央揃えにしたいです。理想的には、テキストのフォントと色付きボックスのサイズを変更できるようにしたいと思います。

私が目指しているものの例は、画像の左側にあります。

色付きのボックス

私は、主に以前の投稿から、さまざまなことを試してきました(1文字分の\colorboxのサイズを設定する) ですが、さまざまな理由でエラーが発生しています。以下は、MWE.tex私が達成しようとしていることに最も近いと思われる 2 つの試みで作成した です。

\documentclass[paper=letterpaper,fontsize=10pt]{article}
\usepackage{amsmath,amsfonts,amsthm}
\usepackage{graphicx}
\usepackage[svgnames]{xcolor}
\usepackage{geometry}
\usepackage{url}
\usepackage{wrapfig}
\frenchspacing
\pagestyle{empty}
\usepackage{sectsty}
\sectionfont{
    \usefont{OT1}{phv}{b}{n}%
    \sectionrule{0pt}{0pt}{-5pt}{3pt}
    }
\usepackage{eqparbox} 

%%% BEGIN DOCUMENT ------------------------------------------------------------
\begin{document}

\vspace*{-7em}

%First attempt%
\noindent \colorbox{Black}{\parbox{4em} \hfill \color{White} \Huge \usefont{OT1}{phv}{b}{n} FirstName}
\vspace*{-.3mm} %doesn't work
\newline
\noindent \colorbox{Black}{\parbox{4em} \hfill \color{White} \Huge \usefont{OT1}{phv}{b}{n} LastName}

%Second attempt%
\noindent \colorbox{Black}{\makebox(60,30){\textcolor{white}{FirstName}}}
\newline
\vspace*{-2em} %doesn't work
\noindent \colorbox{Black}{\makebox(60,30){\textcolor{white}{LastName}}}
\vspace*{5em}

\vspace{2em}
My CV would follow here

\end{document}

lualatex MWE.tex を実行すると、次のような 2 つの試行の結果を示す出力が表示されます。

MWE出力

どちらの試みでも、FirstName と LastName を分ける 2 つのボックスの明らかな違いをなくすのに苦労しています。私は、目の前の問題に対するもっと簡単な解決策、できれば 2 つの別々のボックスを作成する必要がない解決策があるのではないかと考え始めました。

次のようなさまざまな代替案を試しました。

\noindent \colorbox{Black}{\makebox(60,60){\textcolor{white}{FirstName \n LastName}}}

しかし、望み通りの結果には至りません。いつものように、アドバイスをいただければ幸いです。

答え1

これは実際には(はるかに)簡単で、tcolorbox多くのオプションがあります。

\documentclass[paper=letterpaper,fontsize=10pt]{article}
\usepackage{amsmath,amsfonts,amsthm}
\usepackage{graphicx}
\usepackage[svgnames]{xcolor}
\usepackage[most]{tcolorbox}
\usepackage{geometry}
\usepackage{url}
\usepackage{wrapfig}
\frenchspacing
\pagestyle{empty}
\usepackage{sectsty}
\sectionfont{
    \usefont{OT1}{phv}{b}{n}%
    \sectionrule{0pt}{0pt}{-5pt}{3pt}
  }
%\usepackage{eqparbox} % ??? What's this?

%%% BEGIN DOCUMENT ------------------------------------------------------------
\begin{document}
\begin{tcbraster}[raster columns=2,raster equal height]
\begin{tcolorbox}[enhanced jigsaw, % needed to really the frame off!
 colback=black, % black background
 coltext=white, % white text
 halign=center, % center
 fontupper={\Huge \bfseries}, % change the font here
 sharp corners, % no rounded corners
 colframe=black, % not really necessary
 boxrule=0pt % frame off 
 ]
  FirstName

  LastName
\end{tcolorbox}
\begin{tcolorbox}[enhanced jigsaw,sharp corners,coltext=black,colback=white,boxrule=0pt]
\begin{itemize}
\item Github
\item LinkedIn
\item Phone
\end{itemize}
\end{tcolorbox}
\end{tcbraster}

\end{document}

ここに画像の説明を入力してください

答え2

これはまた別のtカラーボックスskinsおよびライブラリを使用するソリューションxparsexparse新しいコマンドを定義するために使用される

\namebox{<first names>}{<last name>}{<content of right hand box e.g. list>}

左側のボックスの幅は、上部と下部の内容に合わせて調整されます。全体の構造は、sidebyside左側のボックスの幅に適応するボックスで構成されます。ボックスの左側は、さらにtcolorbox上部と下部で構成されます。ボックスの右側は、3 番目の引数 (この場合はリスト) の内容で構成されます。

これは説明するよりも実演する方が簡単でしょう:

\namebox{First Names}{Last Name}{%
  \begin{itemize}
    \item[\faGithubSquare] github.com/Repository
    \item[\faLinkedinSquare] linkedin.com/Account
    \item[\faMobile] 0123 456789
  \end{itemize}%
}

この場合、最初の引数は 2 番目の引数よりも幅が広くなるため、左側は の幅に合わせて設定されますFirst Names

\namebox{Short Name}{Somewhat Longer Name}{%
  \begin{itemize}
    \item[\faGithubSquare] github.com/Repository
    \item[\faLinkedinSquare] linkedin.com/Account
    \item[\faMobile] 0123 456789
  \end{itemize}%
}

この場合、2 番目の引数には最初の引数よりも多くのスペースが必要なので、左側のボックスはそれに合わせてサイズ調整されますSomewhat Longer Name

どちらの場合も、残りの線幅は右側のコンテンツ、つまりこの場合はアイコン付きのリストに使用できます。

\DeclareRobustCommand{\nameboxfont}{\normalfont\sffamily\bfseries\Large\baselineskip14pt}

ボックスの内容に使用するフォントを設定します。必要に応じて調整してください。

ボックスに使用されるスタイルを決定する 2 つのスタイルが定義されています。

\tcbset{%
  name box/.style={%

左側の2階建てのボックスにはこのスタイルが使用されています。

    colback=black,

背景は黒です。

    lower separated=false,

上位ビットと下位ビットを分ける線はありません。

    coltext=white,

白いテキスト。

    fontupper=\nameboxfont,
    fontlower=\nameboxfont,

以前に定義したフォントをボックスの両方の部分に適用します。

    halign=center,
    halign lower=center,

上階と下階のテキストを中央揃えにします。

    sharpish corners,

デフォルトでは、丸い角が使用されます。sharpish cornersここでは を使用しました。別の可能性としては がありますsharp corners。どれが好みか試してみてください。

    middle=.75mm,

マニュアルではそうではないと書かれていますが、これはボックスの上部と下部の間の距離の半分のようです。(マニュアルではこれがに加えて boxsepですが、どうやらそうではないようです。

  },

これでそのスタイルは完成です。

  two by two/.style={%

全てが入った大きな箱のスタイルです。

    sidebyside gap=1mm,

左側の黒いボックスとリストを含む右側の間の距離。

    lower separated=false,

上記の通り、線はありません。

    halign upper=left,
    halign lower=left,

左側の黒いボックスの配置leftと右側のリスト配置を に設定しますleft

    sidebyside adapt=left,

パーツの幅を左側のものの幅に合わせて調整します。

    empty,

背景、線などはありません。

    size=minimal,

余分なスペースを追加しないでください。

このボックスは純粋に構造的なものであり、その目的は物事を整列させることであり、決してボックスのように見えることではありません。そのため、ライブラリによって提供されるこの簡素化された「裸の」バージョンが必要ですskins

  },

このスタイルも終わりです。

}

必要なスタイルはこれだけです。

また、測定するときに必要なスクラッチ寸法もいくつか必要です。

\newlength\nameboxtempa
\newlength\nameboxtempb

最後のコマンドの定義は次のとおりです\namebox{}{}{}

\NewDocumentCommand \namebox { m m +m }{%
  \settowidth\nameboxtempa{\nameboxfont #1}%
  \settowidth\nameboxtempb{\nameboxfont #2}%

最初の引数と 2 番目の引数の幅を測定します。

  \ifdim\nameboxtempa<\nameboxtempb\setlength\nameboxtempa{\nameboxtempb}\fi%

次に、幅を比較します。下部にあるもの (姓) の幅が上部にあるもの (名) の幅より大きい場合は、幅を\nameboxtempa下部の幅に設定します。それ以外の場合は、\nameboxtempaすでに必要な幅になっています。

  \tcbsidebyside[two by two]{%

大きな箱に当社のスタイルを適用します。

    \begin{tcolorbox}[%

左側のボックスから始めます。

      name box,

これに私たちのスタイルを適用してください。

      text width=\nameboxtempa,

幅を に設定して、\nameboxtempa含まれる 2 行のうち長い方の行がちょうど収まるようにします。

      ]
      #1

ここに名前を入力してください。

      \tcblower
      #2

姓は下部に記入します。

    \end{tcolorbox}%

環境を閉じると、大きな外側のボックスの左側の作業は完了です。

  }{%
    #3

そのボックスの右側には、3 番目の引数の内容が取得されます。

  }
}

<code>\namebox</code> デモ

完全なコード:

\documentclass{article}
\usepackage{tcolorbox,fontawesome}
\tcbuselibrary{xparse,skins}
\DeclareRobustCommand{\nameboxfont}{\normalfont\sffamily\bfseries\Large\baselineskip14pt}
\newlength\nameboxtempa
\newlength\nameboxtempb
\NewDocumentCommand \namebox { m m +m }{%
  \settowidth\nameboxtempa{\nameboxfont #1}%
  \settowidth\nameboxtempb{\nameboxfont #2}%
  \ifdim\nameboxtempa<\nameboxtempb\setlength\nameboxtempa{\nameboxtempb}\fi%
  \tcbsidebyside[two by two]{%
    \begin{tcolorbox}[%
      name box,
      text width=\nameboxtempa,
      ]
      #1
      \tcblower
      #2
    \end{tcolorbox}%
  }{%
    #3
  }
}
\tcbset{%
  name box/.style={%
    colback=black,
    lower separated=false,
    coltext=white,
    fontupper=\nameboxfont,
    fontlower=\nameboxfont,
    halign=center,
    halign lower=center,
    sharpish corners,
    middle=.75mm,
  },
  two by two/.style={%
    sidebyside gap=1mm,
    boxrule=0pt,
    boxsep=0pt,
    lower separated=false,
    halign upper=left,
    halign lower=left,
    sidebyside adapt=left,
    empty,
    size=minimal,
  },
}
\begin{document}
\namebox{First Names}{Last Name}{%
  \begin{itemize}
    \item[\faGithubSquare] github.com/Repository
    \item[\faLinkedinSquare] linkedin.com/Account
    \item[\faMobile] 0123 456789
  \end{itemize}%
}
\namebox{Short Name}{Somewhat Longer Name}{%
  \begin{itemize}
    \item[\faGithubSquare] github.com/Repository
    \item[\faLinkedinSquare] linkedin.com/Account
    \item[\faMobile] 0123 456789
  \end{itemize}%
}
\end{document}

答え3

tabular環境と以下のシンプルなソリューションcolortbl:

\documentclass[paper=letterpaper,fontsize=10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{geometry}
\usepackage{cabin}
\usepackage{fontawesome}
\usepackage{amsmath}
\usepackage{graphicx, array, multirow, makecell,}
\usepackage[svgnames, table]{xcolor}
\usepackage{url}
\frenchspacing
\pagestyle{empty}
\renewcommand\theadfont{\normalsize\bfseries\color{white}}

%%% BEGIN DOCUMENT ------------------------------------------------------------
\begin{document}

\sffamily
\begin{tabular} {>{\columncolor{black}}ccl}
& \faGithub & Github.com/Lastname\\
 & \faLinkedin & Linkedin.com/Lastname\\
\multirowthead{-3}{First name\\Last name} & \faMobile& 1234.5678
\end{tabular}

\end{document} 

ここに画像の説明を入力してください

答え4

ここに画像の説明を入力してください

\documentclass{article}

\usepackage{color}

\begin{document}

\colorbox{black}{\textcolor{white}{\Large\bfseries\sffamily
\begin{tabular}{@{}l@{}}
FirstName\\
lastName
\end{tabular}}}

\end{document}

関連情報