LaTeX
두 줄이 있는 컬러 상자를 만들려고 합니다 . 텍스트를 중앙에 배치하고 싶습니다. 이상적으로는 텍스트 글꼴과 색상 상자의 크기를 변경할 수 있기를 원합니다.
따라서 제가 목표로 하는 것의 예는 이미지의 왼쪽에 있습니다.
나는 주로 이전 게시물(단일 문자의 \colorbox 크기 설정). 하지만 여러 가지 이유로 오류가 발생합니다. 다음은 MWE.tex
제가 달성하려는 목표에 가장 가까운 것으로 보이는 두 가지 시도를 통해 만든 입니다.
\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를 실행하면 다음과 같은 두 번의 시도 결과를 보여주는 출력이 표시됩니다.
두 시도 모두 FirstName과 LastName을 구분하는 두 상자 사이의 명확한 구분을 없애는 데 어려움을 겪었습니다. 나는 당면한 문제에 대한 더 쉬운 해결책이 있는지, 그리고 아마도 두 개의 별도 상자를 만들 필요가 없는 해결책이 있는지 궁금해하기 시작했습니다.
나는 다음과 같은 다양한 대안을 시도했습니다.
\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
이것은 또 다른 것입니다티컬러박스skins
및 라이브러리를 사용하는 솔루션입니다 xparse
.xparse새로운 명령을 정의하는 데 사용됩니다.
\namebox{<first names>}{<last name>}{<content of right hand box e.g. list>}
왼쪽 상자의 너비는 상단 및 하단 부분의 내용에 맞게 조정됩니다. 전체 구조는 sidebyside
왼쪽 상자의 너비에 맞춰 조정되는 상자로 구성됩니다. 상자의 왼쪽은 tcolorbox
상단 및 하단 부품으로 구성됩니다. 상자의 오른쪽은 세 번째 인수에 포함된 항목으로 구성됩니다. 이 경우에는 목록입니다.
이는 설명하는 것보다 시연하는 것이 더 쉬울 것입니다.
\namebox{First Names}{Last Name}{%
\begin{itemize}
\item[\faGithubSquare] github.com/Repository
\item[\faLinkedinSquare] linkedin.com/Account
\item[\faMobile] 0123 456789
\end{itemize}%
}
이 경우 첫 번째 인수는 두 번째 인수보다 더 많은 너비를 사용하므로 왼쪽은 의 너비를 수용하도록 설정됩니다 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}%
}
이 경우 두 번째 인수는 첫 번째 인수보다 더 많은 공간이 필요하므로 왼쪽 상자의 크기는 Somewhat Longer Name
.
두 경우 모두 선 너비의 나머지 부분은 오른쪽 내용, 즉 이 경우 아이콘이 있는 목록에 사용할 수 있습니다.
\DeclareRobustCommand{\nameboxfont}{\normalfont\sffamily\bfseries\Large\baselineskip14pt}
상자의 내용에 사용될 글꼴을 설정합니다. 원하는대로 적응하십시오.
상자에 사용되는 스타일을 결정하는 두 가지 스타일이 정의됩니다.
\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}%
첫 번째와 두 번째 인수의 너비를 측정합니다.
\ifdim\nameboxtempa<\nameboxtempb\setlength\nameboxtempa{\nameboxtempb}\fi%
이제 너비를 비교해보겠습니다. 아래쪽(성)에 있는 항목의 너비가 위쪽(이름)에 있는 항목의 너비보다 크면 너비를 \nameboxtempa
아래쪽 비트의 너비로 설정합니다. 그렇지 않으면 \nameboxtempa
이미 우리가 원하는 너비입니다.
\tcbsidebyside[two by two]{%
큰 상자에 우리 스타일을 적용하십시오.
\begin{tcolorbox}[%
왼쪽에 있는 상자를 시작하세요.
name box,
이를 위해 우리 스타일을 적용하십시오.
text width=\nameboxtempa,
\nameboxtempa
포함할 두 줄 중 가장 긴 줄만 수용할 수 있도록 너비를 설정합니다 .
]
#1
이름은 여기에 표시됩니다.
\tcblower
#2
성은 하단에 기재됩니다.
\end{tcolorbox}%
환경을 닫으면 큰 외부 상자의 왼쪽이 완성됩니다.
}{%
#3
해당 상자의 오른쪽은 세 번째 인수에 있는 모든 것을 얻습니다.
}
}
전체 코드:
\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}