Estoy intentando crear un cuadro de color LaTeX
que tenga dos líneas. Me gustaría que el texto estuviera centrado. Idealmente, quiero poder cambiar la fuente del texto y el tamaño del cuadro de color.
Entonces, un ejemplo de lo que busco está en el lado izquierdo de la imagen:
He probado numerosas cosas, principalmente de una publicación anterior (Establecer el tamaño de \colorbox para un solo carácter). Pero me encuentro con errores por diferentes motivos. Aquí hay uno MWE.tex
que creé con mis dos intentos y que parece el más cercano a lo que estoy tratando de lograr:
\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}
Al ejecutar lualatex MWE.tex, obtengo un resultado que muestra los resultados de mis dos intentos y que tiene el siguiente aspecto:
En ambos intentos, tengo dificultades para deshacerme de la distinción obvia entre los dos cuadros que separan Nombre y Apellido. Comencé a preguntarme si podría haber una solución más sencilla para mi problema y posiblemente una en la que no tuviera que crear dos cuadros separados.
Probé varias alternativas, tales como:
\noindent \colorbox{Black}{\makebox(60,60){\textcolor{white}{FirstName \n LastName}}}
Pero sigo sin poder alcanzar el resultado deseado. ¡Cualquier consejo es, como siempre, muy apreciado!
Respuesta1
De hecho, esto es (mucho, mucho, mucho) más fácil y tcolorbox
tiene muchas opciones.
\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}
Respuesta2
Este es otrocaja de coloressolución que utiliza las bibliotecas skins
y xparse
.xparsese utiliza para definir un nuevo comando
\namebox{<first names>}{<last name>}{<content of right hand box e.g. list>}
El ancho de la caja de la izquierda se adapta al contenido de las partes superior e inferior. La estructura general consta de un sidebyside
cajón que se adapta al ancho del cajón izquierdo. El lado izquierdo de la caja consta de otra parte tcolorbox
con partes superior e inferior. El lado derecho del cuadro consta de lo que esté en el tercer argumento (en este caso, una lista).
Probablemente esto sea más fácil de demostrar que de explicar:
\namebox{First Names}{Last Name}{%
\begin{itemize}
\item[\faGithubSquare] github.com/Repository
\item[\faLinkedinSquare] linkedin.com/Account
\item[\faMobile] 0123 456789
\end{itemize}%
}
En este caso, el primer argumento tiene más ancho que el segundo, por lo que el lado izquierdo se configurará para acomodar el ancho de 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}%
}
En este caso, el segundo argumento necesita más espacio que el primero, por lo que el cuadro de la izquierda tendrá el tamaño adecuado para acomodar Somewhat Longer Name
.
En ambos casos, el resto del ancho de línea estará disponible para el contenido del lado derecho, es decir, en este caso la lista con iconos.
\DeclareRobustCommand{\nameboxfont}{\normalfont\sffamily\bfseries\Large\baselineskip14pt}
establece la fuente que se utilizará para el contenido de los cuadros. Adáptese como desee.
Se definen dos estilos que determinan los estilos utilizados para las cajas.
\tcbset{%
name box/.style={%
Este estilo se utiliza para la caja de dos pisos de la izquierda.
colback=black,
Fondo negro.
lower separated=false,
No hay línea que separe la parte superior de la inferior.
coltext=white,
Texto blanco.
fontupper=\nameboxfont,
fontlower=\nameboxfont,
Aplica la fuente definida anteriormente a ambas partes del cuadro.
halign=center,
halign lower=center,
Alinea el texto en los pisos superior e inferior centrado.
sharpish corners,
El valor predeterminado es utilizar esquinas redondeadas. He usado sharpish corners
aquí. Otra posibilidad es sharp corners
. Prueba a ver cuál te gusta.
middle=.75mm,
Aunque el manual sugiere lo contrario, esta parece ser la mitad de la distancia entre las partes superior e inferior de la caja. (El manual sugiere que esto esademás de boxsep
, pero ese parece no ser el caso).
},
Ese es ese estilo hecho.
two by two/.style={%
Este es el estilo de la caja grande que incluye todo.
sidebyside gap=1mm,
La distancia entre el cuadro negro de la izquierda y el lado derecho que contiene la lista.
lower separated=false,
Como arriba: sin línea.
halign upper=left,
halign lower=left,
Establece la alineación del cuadro negro izquierdo left
y la alineación de la lista derecha en left
.
sidebyside adapt=left,
Adapta el ancho de las piezas al ancho del material de la izquierda.
empty,
Sin fondo, líneas, etc.
size=minimal,
No agregue espacios adicionales.
Este cuadro es puramente estructural: su propósito es alinear las cosas y no parecerse a un cuadro de ninguna manera, por lo que queremos esta versión simplificada y "simple" proporcionada por la biblioteca skins
.
},
También hemos terminado con este estilo.
}
Esos son todos los estilos que necesitamos.
También queremos un par de dimensiones iniciales para cuando medimos cosas.
\newlength\nameboxtempa
\newlength\nameboxtempb
Aquí está la definición del comando final \namebox{}{}{}
.
\NewDocumentCommand \namebox { m m +m }{%
\settowidth\nameboxtempa{\nameboxfont #1}%
\settowidth\nameboxtempb{\nameboxfont #2}%
Medimos los anchos del primer y segundo argumento.
\ifdim\nameboxtempa<\nameboxtempb\setlength\nameboxtempa{\nameboxtempb}\fi%
Ahora comparamos los anchos. Si el ancho de las cosas en la parte inferior (apellido) es mayor que el ancho de las cosas en la parte superior (nombres), entonces establecemos el ancho \nameboxtempa
al ancho del bit inferior. En caso contrario, \nameboxtempa
ya tiene el ancho que queremos.
\tcbsidebyside[two by two]{%
Aplica nuestro estilo para la caja grande.
\begin{tcolorbox}[%
Inicie el cuadro de la izquierda.
name box,
Aplica nuestro estilo para esto.
text width=\nameboxtempa,
Establezca el ancho en \nameboxtempa
para asegurarse de que se ajuste solo a la más larga de las dos líneas que contendrá.
]
#1
Los nombres van aquí.
\tcblower
#2
El apellido va en la parte de abajo.
\end{tcolorbox}%
Cierra el entorno y terminamos con el lado izquierdo de la caja exterior grande.
}{%
#3
El lado derecho de ese cuadro obtiene lo que esté en el tercer argumento.
}
}
Código completo:
\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}
Respuesta3
Una solución sencilla con un tabular
entorno y 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}