Estoy experimentando con la creación de un paquete abreviado de formato. Quiero usar el guión bajo para delimitar un intervalo de texto subrayado, así
some text _underlined text_ more text
Simplemente activando el guión bajo definiendo una macro
\catcode`_=\active%
\def_#1_{\underline{1}}%
no es viable ya que esto obviamente choca con el uso del guión bajo en modo matemático.
¿Es posible que ambos funcionen? ¿Si es así, cómo?
Respuesta1
Puedes hacerlo, pero es mejor no hacerlo. De verdad, y no sólo porque el subrayado se considera una mala práctica en tipografía. No ganas nada.
\documentclass{article}
\def\ustextormath{\ifmmode\expandafter_\else\expandafter\usunderline\fi}
\begingroup\lccode`~=`_
\lowercase{\endgroup
\def\usunderline#1~{\underline{#1}}
\protected\def~{\ustextormath}
}
\AtBeginDocument{\catcode`\_=\active}
\begin{document}
\section{Some _underlined_ text and $a_1$}
some text _underlined text_ more text and $a_1$
\end{document}
Respuesta2
Buenas noches, pruebe esto si se ajusta a sus necesidades. Técnicamente, el guión bajo es un carácter activo de la categoría 8 en mi ejemplo durante la composición tipográfica. Utilicé \sb
en el modo matemático y la condición para cerrar \it
( \itshape
) en un grupo en el modo texto. El \mycondition
vuelve false
automáticamente al salir de un grupo.
¡Gracias por los útiles comentarios y consejos, egreg, alexis y FK82! ¡Fue divertido!
\catcode`\_=13% Or use \active; from category 8.
\def\false{false}\def\mycondition{false}%
\def_{\ifmmode\sb
\else
\ifx\mycondition\false
\begingroup\def\mycondition{true}\it%\itshape for LaTeXists
\else
\endgroup
\fi
\fi}
Text _more of text_ ToDo $abc_i^2 math$ even more _text_ etc.
%\bye
Prima:Esta es una frase ingeniosa con \newif
involucrados:
\catcode`_=13\newif\ifmyif\myiffalse\def_{\ifmmode\sb\else\ifmyif\endgroup\else\begingroup\myiftrue\it\fi\fi}Text _more of text_ ToDo $abc_i^2 math$ even more _text_ etc.%\bye